11.03.2014 Aufrufe

Vorlesungsskript Computergraphik II - IWR

Vorlesungsskript Computergraphik II - IWR

Vorlesungsskript Computergraphik II - IWR

MEHR ANZEIGEN
WENIGER ANZEIGEN

Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.

YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.

2.3. C FOR GRAPHICS 35<br />

static CGprofile<br />

static CGprogram<br />

cg_fragment_profile;<br />

cg_fragment_program;<br />

static CGparameter cg_parameter_vertex_scale_factor;<br />

static CGparameter cg_parameter_vertex_rotation;<br />

static CGparameter cg_parameter_fragment_color;<br />

// Error checking routine for Cg:<br />

static void checkForCgError(const char *situation) {<br />

CGerror error;<br />

const char *string = cgGetLastErrorString(&error);<br />

}<br />

if (error != CG_NO_ERROR) {<br />

printf("%s: %s\n", situation, string);<br />

if (error == CG_COMPILER_ERROR) {<br />

printf("%s\n", cgGetLastListing(cg_context));<br />

}<br />

exit(1);<br />

}<br />

// keyboard callback:<br />

void keyboard(unsigned char key, int x, int y) {<br />

switch (key) {<br />

case 27: // Escape<br />

case ’q’:<br />

cgDestroyProgram(cg_vertex_program);<br />

cgDestroyProgram(cg_fragment_program);<br />

cgDestroyContext(cg_context);<br />

exit(0);<br />

break;<br />

}<br />

}<br />

// display function:<br />

void display() {<br />

glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);<br />

cgGLBindProgram(cg_vertex_program);<br />

checkForCgError("binding vertex program");<br />

cgGLEnableProfile(cg_vertex_profile);<br />

checkForCgError("enabling vertex profile");<br />

// Hier werden die Werte der einheitlichen Parameter "scale_factor", "vertex_rotation" festgesetzt:<br />

cgGLSetParameter1f(cg_parameter_vertex_scale_factor, 0.7);<br />

cgGLSetParameter1f(cg_parameter_vertex_rotation, 1.509);<br />

cgGLBindProgram(cg_fragment_program);<br />

checkForCgError("binding fragment program");<br />

cgGLEnableProfile(cg_fragment_profile);<br />

checkForCgError("enabling fragment profile");<br />

GLfloat color[] = {0.2, 0.7, 0.3};<br />

cgGLSetParameter3fv(cg_parameter_fragment_color, color);<br />

// Rendern eines Dreiecks. Hierfuer wurde keine Farbe ausgewaehlt!<br />

glBegin(GL_TRIANGLES);<br />

glVertex2f(-0.8, 0.8);<br />

glVertex2f(0.8, 0.8);<br />

glVertex2f(0.0, -0.8);<br />

glEnd();<br />

cgGLDisableProfile(cg_vertex_profile);<br />

checkForCgError("disabling vertex profile");<br />

cgGLDisableProfile(cg_fragment_profile);<br />

checkForCgError("disabling fragment profile");

Hurra! Ihre Datei wurde hochgeladen und ist bereit für die Veröffentlichung.

Erfolgreich gespeichert!

Leider ist etwas schief gelaufen!