| | |
AllegroGL error
Please support our C++ advertiser: Intel Parallel Studio Home
![]() |
•
•
Join Date: Nov 2008
Posts: 7
Reputation:
Solved Threads: 0
Every time I try to execute my program I get an error:"The instruction at "0x00401585" refereced memory at "0x00000028".The memory could not be "read"". Pleas help me!
I have linked -lagl -lalleg -luser32 -lgdi32 -lopengl32 -lglu32
I can't see the problem.
I have linked -lagl -lalleg -luser32 -lgdi32 -lopengl32 -lglu32
I can't see the problem.
C++ Syntax (Toggle Plain Text)
#include <gl\gl.h> #include <GL\glu.h> #include <allegro.h> #include <alleggl.h> int timer; void update_timer() { timer++; } END_OF_FUNCTION(update_timer); bool light=true, fog=true; void initGL(bool FULLSCREEN,int h,int w); // initializate openGL void correctPerspective(GLfloat z1,GLfloat z2); // correct the perspective void DrawScene(GLfloat X,GLfloat Y,GLfloat Z,GLfloat dist); BITMAP* tex; GLuint filter; // Which Filter To Use GLuint texture[3]; const GLfloat ACC=0.003f; const GLfloat DACC=0.002f; void initRendering(); // in this function we enabble GL modules int main() { float d = - 4,rtriX=0,rtriY=0,rtriZ=0,AX=0,AY=0,AZ=0; /* Initialize both Allegro and AllegroGL */ allegro_init(); initGL(true,1366,768); install_keyboard(); install_timer(); LOCK_VARIABLE(timer); LOCK_FUNCTION(update_timer); install_int_ex(update_timer, BPS_TO_TIMER(30)); tex=load_bitmap("Crate.bmp",NULL); GLfloat LightAmbient[]= { 0.5f, 0.5f, 0.5f, 1.0f }; GLfloat LightDiffuse[]= { 1.0f, 1.0f, 1.0f, 1.0f }; GLfloat LightPosition[]= { 1.0f, 1.0f, 1.0f, 1.0f }; float fogColor[4]={0.3,0.3,0.3,0.6}; glLightfv(GL_LIGHT1, GL_AMBIENT, LightAmbient); // Setup The Ambient Light glLightfv(GL_LIGHT1, GL_DIFFUSE, LightDiffuse); // Setup The Diffuse Light glLightfv(GL_LIGHT1, GL_POSITION,LightPosition); // Position The Light glEnable(GL_LIGHT1); //============================================== glFogfv(GL_FOG_COLOR, fogColor); glHint(GL_FOG_HINT, GL_NICEST); glFogi(GL_FOG_MODE, GL_LINEAR); glFogf(GL_FOG_DENSITY, 0.1); glFogf(GL_FOG_START, 1.0); glFogf(GL_FOG_END, 8.0); //================================================= glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); // clear color and depth initRendering(); /* Correct the perspective */ correctPerspective(1.5f, 60.0f); glTexEnvi(GL_TEXTURE_2D,GL_TEXTURE_ENV_MODE, GL_DECAL); //============================ glGenTextures(3, &texture[0]); // Create Three Textures // Create Nearest Filtered Texture glBindTexture(GL_TEXTURE_2D, texture[0]); glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_NEAREST); glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_NEAREST); glTexImage2D(GL_TEXTURE_2D, 0, 3, tex[0].w, tex[0].h, 0, GL_RGB, GL_UNSIGNED_BYTE, tex[0].dat); // Create Linear Filtered Texture glBindTexture(GL_TEXTURE_2D, texture[1]); glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR); glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_LINEAR); glTexImage2D(GL_TEXTURE_2D, 0, 3, tex[0].w, tex[0].h, 0, GL_RGB, GL_UNSIGNED_BYTE, tex[0].dat); // Create MipMapped Texture glBindTexture(GL_TEXTURE_2D, texture[2]); glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR); glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_LINEAR_MIPMAP_NEAREST); gluBuild2DMipmaps(GL_TEXTURE_2D, 3, tex[0].w, tex[0].h, GL_RGB, GL_UNSIGNED_BYTE, tex[0].dat); //============================ while(!key[KEY_ESC]) { while( timer >0 ) { if( key[KEY_UP] ) rtriX-=ACC; if( key[KEY_DOWN] ) rtriX+=ACC; else if(!key[KEY_UP] && !key[KEY_DOWN] && rtriX !=0) { if( rtriX > 0 ) rtriX-=DACC; if( rtriX < 0 ) rtriX+=DACC; } if( key[KEY_RIGHT] ) rtriY+=ACC; if( key[KEY_LEFT] ) rtriY-=ACC; else if(!key[KEY_LEFT] && !key[KEY_RIGHT] && rtriY !=0) { if( rtriY > 0 ) rtriY-=DACC; if( rtriY < 0 ) rtriY+=DACC; } if( key[KEY_A] ) rtriZ-=ACC; if( key[KEY_D] ) rtriZ+=ACC; if( !key[KEY_A] && !key[KEY_D] && rtriZ !=0) { if( rtriZ > 0 ) rtriZ-=DACC; if( rtriZ < 0 ) rtriZ+=DACC; } if(key[KEY_Z]) d+=0.1f; if(key[KEY_X]) d-=0.1f; if(key[KEY_I]&&key[KEY_L]) light=true; if(key[KEY_O]&&key[KEY_L]) light=false; if(key[KEY_I]&&key[KEY_F]) fog=true; if(key[KEY_O]&&key[KEY_F]) fog=false; if(key[KEY_T]&&key[KEY_1]) filter=0; if(key[KEY_T]&&key[KEY_2]) filter=1; if(key[KEY_T]&&key[KEY_3]) filter=2; timer--; } AX=(AX+rtriX); AY=(AY+rtriY); AZ=(AZ+rtriZ); DrawScene(AX,AY,AZ,d); } /* Wait for the user to press a key */ readkey(); /* Finished. */ return 0; } END_OF_MAIN(); void initRendering() { glEnable(GL_DEPTH_TEST); glEnable(GL_LEQUAL); glEnable(GL_TEXTURE_2D); glEnable(GL_BLEND); glEnable(GL_FOG); glEnable(GL_LIGHTING); glEnable(GL_POLYGON_SMOOTH); glEnable(GL_LINE_SMOOTH); // more modules... } void initGL(bool FULLSCREEN,int w,int h) { install_allegro_gl(); allegro_gl_set( AGL_COLOR_DEPTH, 32 ); allegro_gl_set( AGL_Z_DEPTH, 8 ); allegro_gl_set( AGL_SUGGEST, AGL_COLOR_DEPTH | AGL_Z_DEPTH ); if(FULLSCREEN) if(set_gfx_mode( GFX_OPENGL_FULLSCREEN, w, h, 0, 0 )) { allegro_message( "There was an error creating the window" ); } if(!FULLSCREEN) if(set_gfx_mode( GFX_OPENGL_WINDOWED, w, h, 0, 0 )) { allegro_message( "There was an error creating the window" ); } } void correctPerspective(GLfloat z1,GLfloat z2) { glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST); glMatrixMode(GL_PROJECTION); glLoadIdentity(); glMatrixMode(GL_MODELVIEW); glLoadIdentity(); float fMinX = -1.0f, fMaxX = 1.0f, fMinY = -1.0f, fMaxY = 1.0f; float fAspectRatio = SCREEN_W / (float)SCREEN_H; if ( fAspectRatio > 1.0f ) { fMinY = fMinX / fAspectRatio; fMaxY = fMaxX / fAspectRatio; } else { fMinX = fMinY * fAspectRatio; fMaxX = fMaxY * fAspectRatio; } glFrustum( fMinX, fMaxX, fMinY, fMaxY, z1, z2 ); } void DrawScene(GLfloat X,GLfloat Y,GLfloat Z,GLfloat dist) { glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); if( light==true ) glEnable(GL_LIGHT1); if( light==false) glDisable(GL_LIGHT1); if( fog==true ) glEnable(GL_FOG); if( fog==false) glDisable(GL_FOG); glPushMatrix(); glTranslatef(0.0f,0.0f,dist); glBindTexture(GL_TEXTURE_2D, texture[filter]); glRotatef(X,1.0f,0.0f,0.0f); glRotatef(Y,0.0f,1.0f,0.0f); glRotatef(Z,0.0f,0.0f,1.0f); glBegin(GL_QUADS); glColor4f(1.0f,0.0f,0.0f,0.5f); glNormal3f( 0.0f, 0.0f, -1.0f); glTexCoord2f(0.0f, 0.0f); glVertex3f(-1.0f, -1.0f, 1.0f); glTexCoord2f(1.0f, 0.0f); glVertex3f( 1.0f, -1.0f, 1.0f); glTexCoord2f(1.0f, 1.0f); glVertex3f( 1.0f, 1.0f, 1.0f); glTexCoord2f(0.0f, 1.0f); glVertex3f(-1.0f, 1.0f, 1.0f); // Back Face glNormal3f( 0.0f, 0.0f,1.0f); glTexCoord2f(1.0f, 0.0f); glVertex3f(-1.0f, -1.0f, -1.0f); glTexCoord2f(1.0f, 1.0f); glVertex3f(-1.0f, 1.0f, -1.0f); glTexCoord2f(0.0f, 1.0f); glVertex3f( 1.0f, 1.0f, -1.0f); glTexCoord2f(0.0f, 0.0f); glVertex3f( 1.0f, -1.0f, -1.0f); // Top Face glNormal3f( 0.0f, -1.0f, 0.0f); glTexCoord2f(0.0f, 1.0f); glVertex3f(-1.0f, 1.0f, -1.0f); glTexCoord2f(0.0f, 0.0f); glVertex3f(-1.0f, 1.0f, 1.0f); glTexCoord2f(1.0f, 0.0f); glVertex3f( 1.0f, 1.0f, 1.0f); glTexCoord2f(1.0f, 1.0f); glVertex3f( 1.0f, 1.0f, -1.0f); // Bottom Face glNormal3f( 0.0f,1.0f, 0.0f); glTexCoord2f(1.0f, 1.0f); glVertex3f(-1.0f, -1.0f, -1.0f); glTexCoord2f(0.0f, 1.0f); glVertex3f( 1.0f, -1.0f, -1.0f); glTexCoord2f(0.0f, 0.0f); glVertex3f( 1.0f, -1.0f, 1.0f); glTexCoord2f(1.0f, 0.0f); glVertex3f(-1.0f, -1.0f, 1.0f); // Right face glNormal3f( -1.0f, 0.0f, 0.0f); glTexCoord2f(1.0f, 0.0f); glVertex3f( 1.0f, -1.0f, -1.0f); glTexCoord2f(1.0f, 1.0f); glVertex3f( 1.0f, 1.0f, -1.0f); glTexCoord2f(0.0f, 1.0f); glVertex3f( 1.0f, 1.0f, 1.0f); glTexCoord2f(0.0f, 0.0f); glVertex3f( 1.0f, -1.0f, 1.0f); // Left Face glNormal3f(1.0f, 0.0f, 0.0f); glTexCoord2f(0.0f, 0.0f); glVertex3f(-1.0f, -1.0f, -1.0f); glTexCoord2f(1.0f, 0.0f); glVertex3f(-1.0f, -1.0f, 1.0f); glTexCoord2f(1.0f, 1.0f); glVertex3f(-1.0f, 1.0f, 1.0f); glTexCoord2f(0.0f, 1.0f); glVertex3f(-1.0f, 1.0f, -1.0f); glEnd(); glPopMatrix(); glPushMatrix(); glTranslatef(0.0f,0.0f,-20.0f); glBegin(GL_QUADS); glColor3f(0.0f,0.0f,0.0f); glVertex2f(-15.0f,10.0f); glVertex2f(15.0f,10.0f); glVertex2f(15.0f,-10.0f); glVertex2f(-15.0f,-10.0f); glEnd(); glPopMatrix(); allegro_gl_flip(); }
Last edited by Nickyu0712; Aug 1st, 2009 at 6:42 am.
![]() |
Similar Threads
- Code 19 Registry Error (Windows NT / 2000 / XP)
- Error Loading operating System (Windows NT / 2000 / XP)
- svchost.exe error (Windows NT / 2000 / XP)
- New Hardware Causing Error (Windows NT / 2000 / XP)
- office 2000 install error (Windows NT / 2000 / XP)
- VMWare Unrecoverable Error (*nix Software)
- Error in Wrox Book (Perl)
Other Threads in the C++ Forum
- Previous Thread: Accessing Vtable
- Next Thread: What C++ book should I take next?
| Thread Tools | Search this Thread |
Tag cloud for C++
api application array arrays assignment based beginner binary bitmap c++ c/c++ calculator char char* class classes code coding compile compiler console conversion convert count data database delete deploy developer dll dynamiccharacterarray email encryption error file format forms fstream function functions game generator getline givemetehcodez graph iamthwee ifstream image input int java lib list loop looping loops map math matrix memory multidimensional multiple newbie news node number numbertoword output pointer problem program programming project python random read recursion recursive reference rpg simple sorting string strings template templates text tree url variable vector video visual visualstudio win32 windows winsock word wordfrequency wxwidgets





