Problem mit OpenGL und SDL
-
Hi,
ich habe folgendes Problem und zwar kann ich die Z-Achse nicht verändern ich verstehe es nicht wieso das so ist.
Hier mal der Code#include <SDL/SDL.h> #include <gl/gl.h> int main(int argc, char *argv[]) { SDL_Event event; Uint8 *key; int done=0; float cameraX=0.0f,cameraY=0.0f,cameraZ=0.0f; //Initialisierungen SDL_SetVideoMode(1024, 800, 32, SDL_OPENGL | SDL_HWSURFACE | SDL_NOFRAME); glViewport(0, 0, 1024, 800); glClearColor(0.0f, 0.0f, 0.0f, 0.0f); glClearDepth(1.0); glDepthFunc(GL_LESS); glEnable(GL_DEPTH_TEST); glShadeModel(GL_SMOOTH); glMatrixMode(GL_PROJECTION); glMatrixMode(GL_MODELVIEW); //Wiederholen bis ESC gedrückt wird for(done = 0; !done;) { glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); glLoadIdentity(); glTranslatef(cameraX,cameraY,cameraZ); glBegin(GL_TRIANGLES); glColor3f(1.0f, 0.0f, 0.0f); glVertex3f(0.0f, 1.0f,0.0f); glColor3f(0.0f, 1.0f, 0.0f); glVertex3f(-1.0f, -1.0f,0.0f); glColor3f(0.0f, 0.0f, 1.0f); glVertex3f(1.0f, -1.0f,0.0f); glEnd(); SDL_GL_SwapBuffers(); //Tastaturabfrage SDL_PollEvent(&event); key = SDL_GetKeyState(NULL); //aktuellen zustand des keyboards in keys kopieren if(key[SDLK_ESCAPE]) { done=1; } if(key[SDLK_UP]) { cameraY+=0.01f; } if(key[SDLK_DOWN]) { cameraY-=0.01f; } if(key[SDLK_LEFT]) { cameraX-=0.01f; } if(key[SDLK_RIGHT]) { cameraX+=0.01f; } } SDL_Quit(); return(0); }Wenn ich jetzt z.B bei CameraZ den wert -3.0f eingebe dann ist das Dreieck einfach verschwunden wenn ich -1.0f eingebe bleibt es in der gleichen Göße, also die KameraPos. verändert sich nicht. Wenn ich beim 3Eck die Z_pos. verändern will ist es genau das selbe.
ich hoffe ihr könnt mir helfen.
mfg Fabi
-
Setz mal die GL_PROJECTION-Matrix richtig.

-
Meinst du mit:
gluPerspective(45.0f,(GLfloat)width/(GLfloat)height,0.1f,100.0f);
?
Weil da kommt dann ne Fehlermeldung das er die Funktion nicht kennt
-
Achso habe die glu nicht eingebunden aber jetzt kommt noch n fehler
jetzt der aktuelle code:#include <SDL/SDL.h> #include <SDL/SDL_opengl.h> int main(int argc, char *argv[]) { SDL_Event event; Uint8 *key; int done=0; int width=1024,height=800; float cameraX=0.0f,cameraY=0.0f,cameraZ=-1.0f; SDL_SetVideoMode(1024, 800, 32, SDL_OPENGL | SDL_HWSURFACE | SDL_NOFRAME); glViewport(0,0,width, height); glEnable(GL_TEXTURE_2D); //enable texture mapping glClearColor(0.0f, 0.0f, 0.0f, 0.0f); //Black Background glClearDepth(1.0); //enables clearing of deapth buffer glDepthFunc(GL_LEQUAL); //type of depth test glEnable(GL_DEPTH_TEST); //enables depth testing glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA); // Enable Alpha Blending (disable alpha testing) glEnable(GL_BLEND); // Enable Blending (disable alpha testing) glShadeModel(GL_SMOOTH); //enables smooth color shading glMatrixMode(GL_PROJECTION); glLoadIdentity(); //Reset projection matrix gluPerspective(45.0f, (GLfloat)width/(GLfloat)height, 1.0f, 100.0f); //calculate aspect ratio of the window glMatrixMode(GL_MODELVIEW); for(done = 0; !done;) { glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); glLoadIdentity(); glTranslatef(cameraX,cameraY,cameraZ); glBegin(GL_TRIANGLES); glColor3f(1.0f, 0.0f, 0.0f); glVertex3f(0.0f, 1.0f,0.0f); glColor3f(0.0f, 1.0f, 0.0f); glVertex3f(-1.0f, -1.0f,0.0f); glColor3f(0.0f, 0.0f, 1.0f); glVertex3f(1.0f, -1.0f,0.0f); glEnd(); SDL_GL_SwapBuffers(); SDL_PollEvent(&event); key = SDL_GetKeyState(NULL); //aktuellen zustand des keyboards in keys kopieren if(key[SDLK_ESCAPE]) { done=1; } if(key[SDLK_UP]) { cameraY+=0.01f; } if(key[SDLK_DOWN]) { cameraY-=0.01f; } if(key[SDLK_LEFT]) { cameraX-=0.01f; } if(key[SDLK_RIGHT]) { cameraX+=0.01f; } } SDL_Quit(); return(0); }es kommt der Fehler:
[Linker error] undefined reference to `gluPerspective@32'
-
Nicht vergessen, gegen glu32.lib zu linken.
-
Danke für eure Hilfe habe es jetzt hin bekommen
habe es jetzt mit der glFrustum() Funktion gemachtmfg