OpenGL C Fehler



  • Servus Leute,
    ich versuche gerade einen Punkt in OpenGL (C) mit WASD zu bewegen,
    doch leider tut sich nix, wäre nett wenn sich mal einer denn Quellcode anschauen könnte und mir sagen könnte wo der Fehler ist,
    Danke schonmal im Vorraus,
    MfG Justus

    #include <GL/glut.h>
    #include <stdlib.h> 
    #include <time.h>
    
    float a = 0.0f;	//KOORDINATEN FÜR PUNKT IN SZENE
    float b = 0.0f;	//KOORDINATEN FÜR PUNKT IN SZENE
    
    void Szene() {
    
    	//glClearColor(0.0f, 0.0f, 0.0f, 1.0f);	//Hintergrund Farbe setzen
    	glClear(GL_COLOR_BUFFER_BIT);	//Color Buffer clearen
    
    	glPointSize(5);	//Punkt Größe
    	glBegin(GL_POINTS);	//PUNKT zeichnen
    		glColor3f(1.0f, 0.0f, 0.0f);	//Farbe vom PUNKT
    		glVertex2f(a, b);	//PUNKT Koordianten (XY)                     
    	glEnd();	//ENDE von Punkt zeichnen
    
    	glBegin(GL_LINES);
    		glColor3f(1.0, 0.0, 1.0);
    		glVertex2f(1.0f, 1.0f);
    		glVertex2f(-1.0f, -1.0f);
    	glEnd();
    
    	glFlush();	//Rendern
    }
    
    void tasten (unsigned char key, int xmouse, int ymouse)
    {	
    	switch (key){
    		case 'w':
    			b+0.1;
    		break;
    
    		case 'a': 
    			a-0.1;
    		break;
    
     		case 's': 
    			b-0.1;
    		break;
    
     		case 'd': 
    			a+0.1;
    		break;
    
     		case 'r': 
    			a = 0.0f;
    			b = 0.0f;
    		break;
    
    		default:
             break;
    	}
       glutPostRedisplay(); 
    }
    
    /*
    void Szene2(){
    	glClearColor(0.0f, 0.0f, 0.0f, 1.0f);	//Hintergrund Farbe setzen
    	glClear(GL_COLOR_BUFFER_BIT);	//Color Buffer clearen
    	glBegin(GL_LINES);
    		glColor3f(0.0, 0.0, 1.0);
    		glVertex2f(1.0f, 1.0f);
    		glVertex2f(1.0f, -1.0f);
    	glEnd();
    	glBegin(GL_LINES);
    		glColor3f(0.0, 0.0, 1.0);
    		glVertex2f(0.9f, 0.9f);
    		glVertex2f(0.9f, -0.9f);
    	glEnd();
    	glBegin(GL_LINES);
    		glColor3f(0.0, 0.0, 1.0);
    		glVertex2f(0.8f, 0.8f);
    		glVertex2f(0.8f, -0.8f);
    	glEnd();
    	glFlush();
    }
    */
    
    int main(int argc, char **argv) {
    	srand(time(NULL));	
    	glutInit(&argc, argv);	//Initialisierung von GLUT
    	glutCreateWindow("JUSTUS TEST");	//WINDOW Name
    	glutInitWindowSize(300, 300);	//Größe des Fensters
    	glutInitWindowPosition(50, 50);	//Position des Fensters
    	glutReshapeWindow(500, 500);	//Größe des Fensters auf Wunsch Wert umändern
    	glutDisplayFunc(Szene);	//Welche Szene gerendert werden soll
    	glutInitDisplayMode(GLUT_DEPTH | GLUT_DOUBLE | GLUT_RGBA);	//RGB = Default Farben	DOUBLE = Für schönere Animationen	DEPTH = Depth Buffer
    	glutKeyboardFunc(tasten);
    	glutMainLoop();	//Glut in Endlosschleife setzen
    
    	return 1;
    }
    


  • Schalte mal die Warnungen bei deinem Compiler ein (bzw. beachte diese).
    Die Anweisung

    b+0.1;
    

    ist ohne Nutzen. Das gehört aber zu den Grundlagen.
    Richtig ist:

    b += 0.1;
    

    ...



  • Vielen vielen Dank,
    bin leider noch eine andere Sprache gewöhnt deswegen mache ich oft blöde Syntaxfehler!


Anmelden zum Antworten