000
08.05.2008, 12:33 Uhr
force86
|
Hallo Programmiere jetzt seit 2 Jahren C++ und hab jetzt mal mit den Nehe OpenGL Tutorials angefangen.
Hab jedoch ein kleines Problem bzw. eine Frage zur glLoadIdentity.
Nach Tutorial müsste ich nach dem Zeichnen eines Objektes die Model Matrix zurücksetzen. Doch wenn ich das tue und dann das nächste Objekt zeichne, wird dieses nicht mehr angezeigt. Schaut einfach mal in den codeausschnitt. Geht um dasglLoadIdentity nach dem glEnd von TRIANGLES und vor dem nächsten nicht auskommentierten glTranslate. Wenn ich glLoadIdentity aktiv drin habe, wird mein POLYGON nicht mehr angezeigt.
C++: |
int DrawGLScene(GLvoid) // Funktion für alles auf dem bildschirm sichtbare { glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); // vorherige szene löschen glLoadIdentity(); // Rücksetzen auf Koordinatenursprung 0,0,0 glTranslatef(-1.5f,1.5f,-8.0f); //Zeiger auf X -15 auf y 0 und auf z -6
glRotatef(rdreieck,0.0f,1.0f,0.0f); glBegin(GL_TRIANGLES); //Damit wird ein dreieck gezeichnet glColor3f(0.0f,0.0f,1.0f); //Das dreieck wird damit blau (RPG Model) glVertex3f(0.0f,0.3f,0.0f); //Koordianten der oberen Ecke des Dreiecks glColor3f(0.0f,1.0f,0.0f); glVertex3f(-0.3f,-0.3f,0.0f); //untere ecke links glColor3f(1.0f,0.0f,0.0f); glVertex3f(0.3f,-0.3f,0.0f); //untere ecke links glEnd(); //Zeichnen beendet
glLoadIdentity();
/*glTranslatef(3.0f,0.0f,0.0f); //Damit was neues gezeichnet werden kann, wird Zeichner um 3 auf x verschoben glBegin(GL_QUADS); //Es wird ein Viereck gezeichnet glColor3f(1.0f,0.0f,0.0f); //das Viereck wird Rot glVertex3f(-1.0f,1.0f,0.0f); //oben links glVertex3f(1.0f,1.0f,0.0f); //oben rechts glVertex3f(1.0f,-1.0f,0.0f); //unten rechts glVertex3f(-1.0f,-1.0f,0.0f); //unten links glEnd(); // Zeichnen ende */
glTranslatef(3.0f,0.0f,-2.0f); //x um 3,5 verschoben glRotatef(rachteck,0.0f,1.0f,0.0f); glBegin(GL_POLYGON); //ein Polygon wird gezeichnet glColor3f(1.0f,0.0f,0.0f); //rot glVertex3f(-0.5f,1.5f,0.0f); //obere Ecke links glVertex3f(0.5f,1.5f,0.0f); //bere Ecke rechts
glColor3f(0.0f,0.0f,1.0f); //blau glVertex3f(1.5f,0.5f,0.0f); //rechts ecke oben glVertex3f(1.5f,-0.5f,0.0f); //rechte ecke unten
glColor3f(0.0f,1.0f,0.0f); //grün glVertex3f(0.5f,-1.5f,0.0f); //untere Ecke rechts glVertex3f(-0.5f,-1.5f,0.0f); //untere ecke links
glColor3f(1.0f,1.0f,0.0f); //gelb glVertex3f(-1.5f,-0.5f,0.0f); //linke Ecke unten glVertex3f(-1.5f,0.5f,0.0f); //rechte Ecke unten glEnd();
rdreieck -= 0.4f; //Der Drehwert des Dreiecks wird bi jedem durchgang um 0.4 verringert rachteck -= 0.5687; //Drehwert wird bei jedem durchgang um 0,5687 erhöht
return true; // Everything went OK }
|
Dieser Post wurde am 08.05.2008 um 12:35 Uhr von force86 editiert. |