OpenGl again.
- Posted by Paul Martin <twilight at WCC.NET> Apr 08, 1999
- 537 views
Hello everyone. If any of you have read my previous postings you'll know that I'm working on wrappers for OpenGL/GLUT. OpenGL is a 3D graphics API and GLUT is similar to Win32lib, except designed for OpenGL. You can find out more from <www.opengl.org>. I have for the last four weeks been pulling my hair out trying to get it to work. I've been plagued by one problem that I absolutely can not track down, because windows returns an encryptic error message that does not point to any place in my program. I believe the problem may lie in GLUT and the callbacks, but I cannot be sure. I was hoping a few of you would mind downloading what I have, taking a look at it, and see what you can come up with. I really wanted to get this to work on my own, but I'm missing some critical piece of the puzzle. So far GLUT opens a window, clears it and then bombs with the error message: >EXW caused an invalid page fault in >module EXW.EXE at 023f:00405053. >Registers: >EAX=00000000 CS=023f EIP=00405053 EFLGS=00210216 >EBX=0000000f SS=0247 ESP=0056fb88 EBP=00000654 >ECX=00000000 DS=0247 ESI=005806fc FS=420f >EDX=00000000 ES=0247 EDI=0056fba2 GS=0000 >Bytes at CS:EIP: >8b 55 76 81 e2 ff 00 00 00 89 45 72 83 fa 04 75 >Stack dump: >000001f6 0058040c 00000000 00000001 00000200 000001f6 00000201 00f30247 00000200 000001f6 0058040c 00000002 00000202 00f30247 00ec0000 00000040 and then >EXW caused an invalid page fault in >module <unknown> at 0000:0b75fc5d. >Registers: >EAX=bff87fc0 CS=023f EIP=0b75fc5d EFLGS=00210246 >EBX=bff87fc0 SS=0247 ESP=005600f8 EBP=00560118 >ECX=0056019c DS=0247 ESI=81760af0 FS=420f >EDX=bff76859 ES=0247 EDI=00560290 GS=0000 >Bytes at CS:EIP: > >Stack dump: >bff7684d 00560290 bff87fc0 005601c4 0056019c 0056057c bff76859 bff87fc0 005601ac bff87fc0 00560290 bff87fc0 005601c4 0056019c 0b75fc5d 00560304 This means apparently I'm passing a bad value to GLUT. I've run a trace on the program and it occurs when it's in glutMainLoop() which is C procedure. If you are willing to take a look you will need Euphoria 2.1, because it requires multiple callbacks. You will also need the Mesa dll's. I have posted the wrappers (56k) at <http://www.geocities.com/CapeCanaveral/Campus/8684/Cube.zip>. I have provided two demo programs cube.exw and simple.exw, both return with the same errors. The Mesa dll's (352k) can be download here <http://www.geocities.com/CapeCanaveral/Campus/8684/mesa3dll.zip>. DO NOT put them in your windows\system directory, make a new directory elsewhere, and put them there. Mesa is not 100% OpenGL compliant so if you overwrite the ones in your windows\system directory other programs may break. If you want more documentation on Opengl and GLUT you can visit <www.opengl.org>. I've also include the C programs that I used for the demos, and the libraries for OpenGL/GLUT. You will probably need to edit the sequence "prefix" in each of the libraries (glu.ew, glut2.ew, and opengl3.ew), to tell it where you placed the Mesa dll's. Other than that they should run (sorta). Even if you are not successful at figuring out what's wrong, I'd also appreciate any feedback. Thanks Paul Martin