error C2065: 'data': nichtdek
-
ich hab mir den code von dieser Website heruntergeladen.
doch obwohl ich alle nötigen voraussetzungen installiert habe, kommt fogende Fehlermeldung:
error C2065: 'data': nichtdeklarierter Bezeichner
hat jemand eine idee wie was ich falsch mach?
http://www.nd.edu/~pbui/teaching/cse40166.f10/examples/ex_22.html
-
Ich sehe in dem Code keinen Bezeichner
data
. Zeig mal die Zeile, in der der Fehler auftritt.
-
falscher code
#include <stdio.h> #include <stdlib.h> #include <math.h> #ifdef __APPLE__ #include <GLUT/glut.h> #else #include <GL/glut.h> #endif // angle of rotation for the camera direction float angle = 0.0f; // actual vector representing the camera's direction float lx=0.0f,lz=-1.0f; // XZ position of the camera float x=0.0f, z=5.0f; // the key states. These variables will be zero // when no key is being pressesed float deltaAngle = 0.0f; float deltaMove = 0; int xOrigin = -1; // color for the snowman's nose float red = 1.0f, blue=0.5f, green=0.5f; // scale of snowman float scale = 1.0f; // default font void *font = GLUT_STROKE_ROMAN; // width and height of the window int h,w; // variables to compute frames per second int frame; long time, timebase; char s[60]; char currentMode[80]; // this string keeps the last good setting // for the game mode char gameModeString[40] = "640x480"; void init(); void changeSize(int ww, int hh) { h = hh; w = ww; // Prevent a divide by zero, when window is too short // (you cant make a window of zero width). if (h == 0) h = 1; float ratio = w * 1.0 / h; // Use the Projection Matrix glMatrixMode(GL_PROJECTION); // Reset Matrix glLoadIdentity(); // Set the viewport to be the entire window glViewport(0, 0, w, h); // Set the correct perspective. gluPerspective(45.0f, ratio, 0.1f, 100.0f); // Get Back to the Modelview glMatrixMode(GL_MODELVIEW); } void drawSnowMan() { glScalef(scale, scale, scale); glColor3f(1.0f, 1.0f, 1.0f); // Draw Body glTranslatef(0.0f ,0.75f, 0.0f); glutSolidSphere(0.75f,20,20); // Draw Head glTranslatef(0.0f, 1.0f, 0.0f); glutSolidSphere(0.25f,20,20); // Draw Eyes glPushMatrix(); glColor3f(0.0f,0.0f,0.0f); glTranslatef(0.05f, 0.10f, 0.18f); glutSolidSphere(0.05f,10,10); glTranslatef(-0.1f, 0.0f, 0.0f); glutSolidSphere(0.05f,10,10); glPopMatrix(); // Draw Nose glColor3f(red, green, blue); glRotatef(0.0f,1.0f, 0.0f, 0.0f); glutSolidCone(0.08f,0.5f,10,2); glColor3f(1.0f, 1.0f, 1.0f); } void renderBitmapString( float x, float y, float z, void *font, char *string) { char *c; glRasterPos3f(x, y,z); for (c=string; *c != '\0'; c++) { glutBitmapCharacter(font, *c); } } void renderStrokeFontString( float x, float y, float z, void *font, char *string) { char *c; glPushMatrix(); glTranslatef(x, y,z); glScalef(0.002f, 0.002f, 0.002f); for (c=string; *c != '\0'; c++) { glutStrokeCharacter(font, *c); } glPopMatrix(); } void restorePerspectiveProjection() { glMatrixMode(GL_PROJECTION); // restore previous projection matrix glPopMatrix(); // get back to modelview mode glMatrixMode(GL_MODELVIEW); } void setOrthographicProjection() { // switch to projection mode glMatrixMode(GL_PROJECTION); // save previous matrix which contains the //settings for the perspective projection glPushMatrix(); // reset matrix glLoadIdentity(); // set a 2D orthographic projection gluOrtho2D(0, w, h, 0); // switch back to modelview mode glMatrixMode(GL_MODELVIEW); } void computePos(float deltaMove) { x += deltaMove * lx * 0.1f; z += deltaMove * lz * 0.1f; } void renderScene(void) { if (deltaMove) computePos(deltaMove); // Clear Color and Depth Buffers glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); // Reset transformations glLoadIdentity(); // Set the camera gluLookAt( x, 1.0f, z, x+lx, 1.0f, z+lz, 0.0f, 1.0f, 0.0f); // Draw ground GLuint texture; // allocate a texture name glGenTextures( 1, &texture ); // select our current texture glBindTexture( GL_TEXTURE_2D, texture ); // select modulate to mix texture with color for shading glTexEnvf( GL_TEXTURE_ENV, GL_TEXTURE_ENV_MODE, GL_MODULATE ); // when texture area is small, bilinear filter the closest mipmap glTexParameterf( GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_NEAREST ); // when texture area is large, bilinear filter the original glTexParameterf( GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR ); // the texture wraps over at the edges (repeat) glTexParameterf( GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_REPEAT ); glTexParameterf( GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_REPEAT ); int width, height; void Byte * data; FILE * file; // texture data width = 256; height = 256; // allocate buffer data = malloc( width * height * 3 ); // open and read texture data file = fopen( "C:/Users/Marvin/Pictures/Textest.bmp", "rb" ); fread( data, width * height * 3, 1, file ); fclose( file ); //end website glColor3f(0.1f, 0.9f, 0.9f); glBegin(GL_QUADS); glVertex3f(-100.0f, 0.0f, -100.0f); glVertex3f(-100.0f, 0.0f, 100.0f); glVertex3f( 100.0f, 0.0f, 100.0f); glVertex3f( 100.0f, 0.0f, -100.0f); glEnd(); // Draw 36 SnowMen char number[3]; for(int i = -0; i < 1; i++) for(int j=-0; j < 1; j++) { glPushMatrix(); glTranslatef(i*10.0f, 0.0f, j * 10.0f); drawSnowMan(); sprintf(number,"%d",(i+3)*6+(j+3)); renderStrokeFontString(0.0f, 0.5f, 0.0f, (void *)font ,number); glPopMatrix(); } // Code to compute frames per second frame++; time=glutGet(GLUT_ELAPSED_TIME); if (time - timebase > 1000) { sprintf(s,"Lighthouse3D - FPS:%4.2f", frame*1000.0/(time-timebase)); timebase = time; frame = 0; } setOrthographicProjection(); void *font= GLUT_BITMAP_8_BY_13; glPushMatrix(); glLoadIdentity(); renderBitmapString(30,15,0,font,(char *)"GLUT Tutorial @ Lighthouse3D"); renderBitmapString(30,30,0,font,s); renderBitmapString(30,45,0,font,(char *)"F1 - Game Mode 640x480 32 bits"); renderBitmapString(30,60,0,font,(char *)"F2 - Game Mode 800x600 32 bits"); renderBitmapString(30,75,0,font,(char *)"F3 - Game Mode 1024x768 32 bits"); renderBitmapString(30,90,0,font,(char *)"F4 - Game Mode 1280x1024 32 bits"); renderBitmapString(30,105,0,font,(char *)"F5 - Game Mode 1920x1200 32 bits"); renderBitmapString(30,120,0,font,(char *)"F6 - Window Mode"); renderBitmapString(30,135,0,font,(char *)"Esc - Quit"); renderBitmapString(30,150,0,font,currentMode); glPopMatrix(); restorePerspectiveProjection(); glutSwapBuffers(); } // ----------------------------------- // KEYBOARD // ----------------------------------- void processNormalKeys(unsigned char key, int xx, int yy) { switch (key) { case 27: if (glutGameModeGet(GLUT_GAME_MODE_ACTIVE) != 0) glutLeaveGameMode(); exit(0); break; } } void pressKey(int key, int xx, int yy) { switch (key) { case GLUT_KEY_UP : deltaMove = 0.5f; break; case GLUT_KEY_DOWN : deltaMove = -0.5f; break; case GLUT_KEY_F1: // define resolution, color depth glutGameModeString("640x480:32"); // enter full screen if (glutGameModeGet(GLUT_GAME_MODE_POSSIBLE)) { glutEnterGameMode(); sprintf(gameModeString,"640x480:32"); // register callbacks again // and init OpenGL context init(); } else glutGameModeString(gameModeString); break; case GLUT_KEY_F2: // define resolution, color depth glutGameModeString("800x600:32"); // enter full screen if (glutGameModeGet(GLUT_GAME_MODE_POSSIBLE)) { glutEnterGameMode(); sprintf(gameModeString,"800x600:32"); // register callbacks again // and init OpenGL context init(); } else glutGameModeString(gameModeString); break; case GLUT_KEY_F3: // define resolution, color depth glutGameModeString("1024x768:32"); // enter full screen if (glutGameModeGet(GLUT_GAME_MODE_POSSIBLE)) { glutEnterGameMode(); sprintf(gameModeString,"1024x768:32"); // register callbacks again // and init OpenGL context init(); } else glutGameModeString(gameModeString); break; case GLUT_KEY_F4: // define resolution, color depth glutGameModeString("1280x1024:32"); // enter full screen if (glutGameModeGet(GLUT_GAME_MODE_POSSIBLE)) { glutEnterGameMode(); sprintf(gameModeString,"1280x1024:32"); // register callbacks again // and init OpenGL context init(); } else glutGameModeString(gameModeString); break; case GLUT_KEY_F5: // define resolution, color depth glutGameModeString("1920x1200"); // enter full screen if (glutGameModeGet(GLUT_GAME_MODE_POSSIBLE)) { glutEnterGameMode(); sprintf(gameModeString,"1920x1200"); // register callbacks again // and init OpenGL context init(); } else glutGameModeString(gameModeString); break; case GLUT_KEY_F6: // return to default window w = 800;h = 600; if (glutGameModeGet(GLUT_GAME_MODE_ACTIVE) != 0) { glutLeaveGameMode(); //init(); } break; } if (glutGameModeGet(GLUT_GAME_MODE_ACTIVE) == 0) sprintf(currentMode,"Current Mode: Window"); else sprintf(currentMode, "Current Mode: Game Mode %dx%d at %d hertz, %d bpp", glutGameModeGet(GLUT_GAME_MODE_WIDTH), glutGameModeGet(GLUT_GAME_MODE_HEIGHT), glutGameModeGet(GLUT_GAME_MODE_REFRESH_RATE), glutGameModeGet(GLUT_GAME_MODE_PIXEL_DEPTH)); } void releaseKey(int key, int x, int y) { switch (key) { case GLUT_KEY_UP : case GLUT_KEY_DOWN : deltaMove = 0;break; } } // ----------------------------------- // MOUSE // ----------------------------------- void mouseMove(int x, int y) { // this will only be true when the left button is down if (xOrigin >= 0) { // update deltaAngle deltaAngle = (x - xOrigin) * 0.001f; // update camera's direction lx = sin(angle + deltaAngle); lz = -cos(angle + deltaAngle); } } void mouseButton(int button, int state, int x, int y) { // only start motion if the left button is pressed if (button == GLUT_LEFT_BUTTON) { // when the button is released if (state == GLUT_UP) { angle += deltaAngle; xOrigin = -1; } else {// state = GLUT_DOWN xOrigin = x; } } } void init() { // register callbacks glutDisplayFunc(renderScene); glutReshapeFunc(changeSize); glutIdleFunc(renderScene); glutIgnoreKeyRepeat(1); glutKeyboardFunc(processNormalKeys); glutSpecialFunc(pressKey); glutSpecialUpFunc(releaseKey); glutMouseFunc(mouseButton); glutMotionFunc(mouseMove); // OpenGL init glEnable(GL_DEPTH_TEST); glEnable(GL_CULL_FACE); } // ----------------------------------- // MAIN // ----------------------------------- int main(int argc, char **argv) { // init GLUT and create window glutInit(&argc, argv); glutInitDisplayMode(GLUT_DEPTH | GLUT_DOUBLE | GLUT_RGBA); glutInitWindowPosition(100,100); glutInitWindowSize(800,600); glutCreateWindow("Lighthouse3D - GLUT Tutorial"); // register callbacks init(); // enter GLUT event processing cycle glutMainLoop(); return 1; }
-
Ich vermute mal das Problem mit dem Code ist, dass es kein gültiges C90 ist, sondern C99. In C90 müssen alle Variablen am Blockanfang deklariert werden. Visual C++ z.B. wird den Code so jedenfalls nicht kompilieren.
-
hab grad gemerkt, das es ein zimlich alter Code ist.
Nur so, kenst du einen aktuellen glut Code als Beispiel für Texturen?
-
Was haben Texturen mit GLUT zu tun?
Ein modernes OpenGL Tutorial gibts hier:
http://duriansoftware.com/joe/An-intro-to-modern-OpenGL.-Table-of-Contents.html
-
wie meinst du das?
glut kann keine texturen?
-
Kanns sein, dass du glut mit OpenGL durcheinanderbringst? Das sind nämlich zwei völlig verschiedene Dinge...
-
ich da ziemlich neu, und das internet ist ziemlich geizig mit informationen.
für ein richtiges opgl projekt mit texturen, welche bibliotheken und header brauch ich da?
stimmt es das glaux veraltet ist?
-
Marvin94 schrieb:
für ein richtiges opgl projekt mit texturen, welche bibliotheken und header brauch ich da?
Streng genommen: Nichts außer OpenGL. Tutorial hab ich ja schon gepostet, dort wird dir eh alles erklärt...
Marvin94 schrieb:
stimmt es das glaux veraltet ist?
Ja
-
danke
ach, ich glaub das beste wär schon ein buch, kannst du mir zufällig eins empfehlen?
-
Tut mir leid, ich kenn leider keins das ich empfehlen könnte...
-
ich hab das tutorial ausprobiert, doch der code funktioniert hinten und vorne nicht
-
Dann machst du wohl was falsch...
-
Marvin94 schrieb:
ich hab das tutorial ausprobiert, doch der code funktioniert hinten und vorne nicht
Fehlermeldungen und betreffenden Code posten, dann sehen wir weiter.