OpenGL



  • Guten Abend alle zusammen...
    Ich habe eine grundlegene Frage zu OpenGL: In der Zeichnen-Funktion kann man ja den Inhalt "angeben", der später im Fenster zu sehen sein soll. Ich möchte jetzt, wenn W,A,S,D gedrückt wird, das Objekt in die jeweilige Richtung bewegen. Dazu habe ich eine if-Schleife eingebaut, also wenn W gedrückt wird wird eben glTransformf() mit den entsprechend veränderten Parametern ausgeführt. Das Problem ist nur, dass ich, nachdem ich eine Taste gedrückt habe, das Objekt im Fenster nicht mehr sehe...hat einer eine Idee, was da schiefgelaufen ist?

    int DrawGLScene(GLvoid) 
    {
      glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); 
    
      glLoadIdentity(); 
    
      glTranslatef(pos_x, pos_y, pos_z-6.0f);
    
      glBegin(GL_TRIANGLES); 
        glColor3f(0.0f,0.0f,1.0f); 
        glVertex3f( 0.0f, 1.0f, 0.0f); 
        glVertex3f(-1.0f,-1.0f, 0.0f);
        glVertex3f( 1.0f,-1.0f, 0.0f); 
      glEnd(); 
    
      glLoadIdentity(); 
    
    	if(keys[VK_UP])
    	{
    		pos_y+=0.1f;
    	}
    
    	if(keys[VK_DOWN])
    	{
    		pos_y-=0.1f;
    	}
    
    	if(keys[VK_RIGHT])
    	{
    		pos_x+=0.1f;
    	}
    
    	if(keys[VK_LEFT])
    	{
    		pos_x-=0.1f;
    	}
    
    	return TRUE; // Alles hat geklappt
    }
    


  • Vermutlich geht's zu schnell und fährt ausm sichtbaren Bereich raus!?
    Check eben mal die Position nachdem das passiert ist...



  • OK...Problem gelöst...das PRoblem war, das man in der Schleife hängenbleibt...

    Lösung:

    while(keys[VK_W])
    {
    	keys[VK_W]=FALSE;
    	pos_y+=0.1f;
    }
    

Anmelden zum Antworten