Problem bei OpenGL C-Code
-
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; }
-
Hi. Ich kenne mich nicht mit GLUT aus, allerdings könnte es gut sein, dass GLUT Tastatureingaben nicht als ASCII-Zeichen, sonden als Tastatur-Scancode verarbeitet.
moment... ich "googel" mal gerade nach "glutKeyboardFunc" - nein derkey
ist tatsächlich ASCII.
Jetzt schau ich mir deinen Code mal genauer an... WTF?case 'w': b+0.1;
Ist das dein Ernst?
Nur so viel: "b+0.1
" ist ein Ausdruck, keine Zuweisung.
Den Rest solltest du dir selbst erschiessen können.Meine Empfehlung: Vertiefe deine Kenntnisse in der Programmiersprache noch ein wenig, bevor du deine Probleme hier als OpenGL-Problem titulierst.
Wie du sicher an meinen hier niedergeschriebenen Gedankengängen und Aktionen erkennen kannst,
ist es nämlich ziemlich zeitraubend und letztendlich ernüchternd wenn das eigentliche Problem derart banal istGruss,
Finnegan