OpenGL-Keine KeyInput() annahme !
-
Hi leute,
ich versteh grad nicht, wo mein Fehler liegt. Bin ich jetzt schon so _verblödet_, das ich das hier jetzt nicht check !?
Und zwar, soll nach KeInput die Translantation erfolgen, das heisst, wenn eine Taste gedrückt wurde, sollen sich alle Objekte in die Richtung drehen. Wie ein Egoshooter also. Dafür hab ich ein paar einfache float Werte übergeben, die aber irgendwie nicht funzen wollen. Hier mal der Code :#include <windows.h> #include <gl\gl.h> #include <gl\glu.h> #include <gl\glaux.h> #include <stdio.h> HGLRC hRC=NULL; HDC hDC=NULL; HWND hWnd=NULL; HINSTANCE hInstance; bool keys[256]; bool active=TRUE; bool fullscreen=TRUE; float rot=0.0f; float grün=0.0f; float blau=0.0f; float running_speed=0.0; float x_running; float y_running; float z_running; void Draw_Ground(); GLuint texture[1]; LRESULT CALLBACK WndProc(HWND,UINT,WPARAM,LPARAM); AUX_RGBImageRec *LoadBmp(char *Filename) { FILE *File=NULL; if(!Filename) { MessageBox(NULL,"Konnte Filenamen nicht initialisieren !","Fehler",MB_OK); return NULL; } File=fopen(Filename,"r"); if(File) { fclose(File); return auxDIBImageLoad (Filename); } return NULL; } int LoadGLTextures() { int Status=false; AUX_RGBImageRec *TextureImage[1]; if(TextureImage[0]=LoadBmp("Data/ground.bmp")) { Status=true; glGenTextures(1,&texture[0]); glBindTexture(GL_TEXTURE_2D,texture[0]); glTexImage2D(GL_TEXTURE_2D,0,3,TextureImage[0]->sizeX,TextureImage[0]->sizeY,0,GL_RGB,GL_UNSIGNED_BYTE,TextureImage[0]->data); glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_LINEAR); glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR); } if(TextureImage[0]) { if(TextureImage[0]->data) { free(TextureImage[0]->data); } free(TextureImage[0]); } return Status; } void Draw_Ground() { glBindTexture(GL_TEXTURE_2D,texture[0]); glTranslatef(0.0f,0.0f,-10.0f); glBegin(GL_QUADS); glTexCoord2f(-30.0f,0.0f);glVertex3f(-30.0f,0.0f,0.0f); glTexCoord2f(30.0f,0.0f);glVertex3f(30.0f,0.0f,0.0f); glTexCoord2f(30.0f,0.0f);glVertex3f(30.0f,0.0f,-60.0f); glTexCoord2f(-30.0f,0.0f);glVertex3f(-30.0f,0.0f,-60.0f); glEnd(); } GLvoid ReSizeGLScene(GLsizei width,GLsizei height) { if(height==0) { height=1; } glViewport(0,0,width,height); glMatrixMode(GL_PROJECTION); glLoadIdentity(); gluPerspective(45.0f,(GLfloat)width/(GLfloat)height,0.1f,100.0f); glMatrixMode(GL_MODELVIEW); glLoadIdentity(); } int InitGL(GLvoid) { if(!LoadGLTextures()) { MessageBox(NULL,"Konnte Bildformat nicht öffnen !","Fehler",MB_OK); return false; } rot=0.0; grün=0.0; blau=0.0; glShadeModel(GL_SMOOTH); glClearColor(rot,grün,blau,0.0f); glClearDepth(1.0f); glEnable(GL_DEPTH_TEST); glDepthFunc(GL_LEQUAL); glEnable(GL_TEXTURE_2D); glHint(GL_PERSPECTIVE_CORRECTION_HINT,GL_NICEST); return TRUE; } int DrawGLScene(GLvoid) { glClear(GL_DEPTH_BUFFER_BIT | GL_COLOR_BUFFER_BIT); glLoadIdentity(); x_running=0.0f; y_running=-3.0f; z_running=0.0f; running_speed+=0.5; glTranslatef(x_running,y_running,z_running); Draw_Ground(); running_speed=1.0; if(keys[VK_UP]) { z_running-=running_speed; return keys[VK_UP]=FALSE; } if(keys[VK_DOWN]) { z_running+=running_speed; return keys[VK_DOWN]=FALSE; } return TRUE; }Ich verstehe das aboslut nicht, danke im voraus !
-
Schon gut Leute, hab grad meinen _dümmlichen_ Fehler gesehen. Tut mir echt Leid.
Der Fehler lag bei der Parameterüergabe, hab sie nämlich direkt mitin der selben Funktion mitübergeben, in der ich gleichzeitig die Abfrage starte.
Hier lag der Fehler :int DrawGLScene(GLvoid) { glClear(GL_DEPTH_BUFFER_BIT | GL_COLOR_BUFFER_BIT); glLoadIdentity(); ///////////////////////////// // Hier der Fehler // ///////////////////////////// x_running=0.0f; y_running=-3.0f; z_running=0.0f; running_speed+=0.5; //////////////////////////// // Fehler Ende // //////////////////////////// glTranslatef(x_running,y_running,z_running); Draw_Ground(); running_speed=1.0; if(keys[VK_UP]) { z_running-=running_speed; return keys[VK_UP]=FALSE; } if(keys[VK_DOWN]) { z_running+=running_speed; return keys[VK_DOWN]=FALSE; } return TRUE; }Thread ist gelöst.