Nutzen von GLDrawElements



  • Hallo

    ich nutze seit kurzem GLDrawElements, da es wohl Vorteile bzgl der Rechenzeit bietet und so viel schreiben muss man damit auch nicht.
    Jetzt wollte ich fragen, ob man damit auch Rotationen(also dass sich mein Objekt auf dem Bildschirm bewegt) machen kann, wie sonst auch.
    Also einfach:

    glRotate(a,1,0,0);
    cube(); //Aufruf des Ojekts
    a += 0.1;

    Weil es geht bei mir irgendwie net

    Oder muss man da was anderes verwenden????????

    Danke für eure antworten



  • GLDrawElements [...] ob man damit auch Rotationen machen kann

    Ja.

    Weil es geht bei mir irgendwie net

    Du wirst Deinen Fehler konkreter beschreiben muessen.



  • Hier mein Code, zur Veranschaulichung

    #include <stdlib.h> 
    #include <windows.h>
    #include <GL/glut.h>
    
    GLfloat theta;
    
    GLfloat vertices[][3]={{-1,-1,-1},{1,-1,-1},{1,1,-1},{-1,1,-1},{-1,-1,1},{1,-1,1},{1,1,1},{-1,1,1}};
    
    void tetraeder()
    {
    	GLubyte tetraIndices[9]={0,7,5,0,2,5,7,2,0};
    	glDrawElements(GL_TRIANGLES,9,GL_UNSIGNED_BYTE,tetraIndices);
    }
    
    void colorcube()
    {
    	GLubyte cubeIndices[24]={0,3,2,1,2,3,7,6,0,4,7,3,1,2,6,5,4,5,6,7,0,1,5,4};
    	glDrawElements(GL_QUADS,24,GL_UNSIGNED_BYTE,cubeIndices);
    }
    void display() {
    	glClear(GL_DEPTH_BUFFER_BIT | GL_COLOR_BUFFER_BIT);
    	glRotatef(theta,1,0,0);                    //ab hier
    	glPolygonMode(GL_FRONT_AND_BACK, GL_LINE);
            glLoadIdentity();
    
    	colorcube();                               //glBegin()...
    	tetraeder();                               //glEnd()
    	theta += 0.4f;                             //bis hier
    	glutSwapBuffers();	  
    }
    
    void init() {
    	glClearColor( 0.0, 0.0, 0.0, 1.0 ); 
    	glEnableClientState(GL_VERTEX_ARRAY);
    	glVertexPointer(3,GL_FLOAT,0,vertices);
    	glMatrixMode(GL_PROJECTION);
    	glLoadIdentity();
    	glOrtho(-2.0,2.0,-2.0,2.0,-2.0,2.0);
    	gluLookAt(0.25,0.25,0.5, 0,0,0, 0,1,0);
    	glPolygonMode(GL_FRONT_AND_BACK, GL_LINE);
    	glMatrixMode(GL_MODELVIEW);
    	glLoadIdentity();
    
    }
    
    int main( int argc, char *argv[] ) {
    
    	glutInit(&argc, argv);
    	glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB| GLUT_DEPTH);
    	glutInitWindowSize(500, 500);
    	glutCreateWindow("Übung_3-Problem_1");
    	init();
    	glutDisplayFunc(display);
    	glutMainLoop();							
    	return 0;
    }
    

    Hallo,

    tschuldigung, dass ich mich so lang nicht gemeldet hab.War unterwegs.

    Also mich interessiert das Markierte, wo steht ab hier bis hier.
    Es geht nicht, dass mein Objekt routiert.
    Muss ich also extra ne Funktion definieren? Und wenn ja, wie?
    Normalerweise ging das, wenn man glBegin und glEnd (sieht man im Kommentar) benutzt hat.
    Aber hier irgendwie net.

    Ich bin ziemlicher Anfänger auf dem Gebiet...
    Kennt einer vllt ein Buch, wo die Befehle auch so erklärt werden, wie der Computer sie bearbeitet.Am liebsten auf DEUTSCH.

    Danke euch 😉





  • Super Danke

    Das hat mir echt geholfen.
    Die Seite ist der Hammer und genau das wonach ihc gesucht habe.

    Danke


Anmelden zum Antworten