Hello, Pardon if this is an easy one, but I've been looking at it for a few days and haven't found an "easy" solution. If anyone can issue me a few adroit pointers (or kicks), I'd be most grateful.
PROBLEM ------- I need to be able to build and run an OpenGL implementation from source on Windows. Performance isn't an issue, so it doesn't need to have any hardware acceleration, but I need to be able to tweak specific equations and constants within the source code. OBSERVATIONS ------------ It looks like the default Cygwin OpenGL libraries are basically just pass-throughs to the pre-compiled Microsoft implementation; is that correct? Since MS probably isn't about to open up the source to their version, I went looking for open-source implementations. SGI's ogl-sample and the Mesa3D version both looked promising; perhaps Chromium if neither of those pan out. However, I'm finding it's "easier said than done" to get one of those compiling and linked into Cygwin's X11R6 installation. For instance, Mesa3D doesn't seem to come with a "cygwin" configuration. I hacked one from the provided "linux-static" version and was able to compile, but the teapot demo coredumps on its first(?) call to glGetString: LOG INFO : teapot: Teapot V1.2 LOG INFO : teapot: Written by David Bucciarelli ([EMAIL PROTECTED]) LOG INFO : teapot: calling glutInit... LOG INFO : teapot: calling inittextures... LOG TRACE : inittextures: [entering] LOG INFO : inittextures: glGenTextures... LOG INFO : inittextures: glBindTexture... LOG INFO : inittextures: glPixelStorei... LOG INFO : inittextures: LoadRGBMipmaps... LOG TRACE : LoadRGBMipmaps: [entering] LOG TRACE : LoadRGBMipmaps2: [entering] LOG INFO : LoadRGBMipmaps2: calling tkRGBImageLoad: ../images/tile.rgb LOG TRACE : tkRGBImageLoad: [entering] LOG TRACE : tkRGBImageLoad: [returning] LOG INFO : LoadRGBMipmaps2: checking that image was returned LOG INFO : LoadRGBMipmaps2: determining format from number of components LOG INFO : LoadRGBMipmaps2: looks like RGB LOG INFO : LoadRGBMipmaps2: calling gluBuild2DMipmaps LOG INFO : gluBuild2DMipmaps: calling closestFit... LOG INFO : closestFit: start LOG INFO : closestFit: calling glGetString(GL_VERSION) Segmentation fault (core dumped) I wasn't sure where that was coming from, so I temporarily set that path aside and tried looking at the SGI ogl-sample build instructions. It seemed to state that, like it or not, I was probably going to have to build X11 from scratch if I wanted to change OpenGL implementations. So then I took a full CVS checkout of Xorg (per http://x.cygwin.com/docs/cg/prog-obtaining-source.html) and built it. That went surprisingly smooth (great job, maintainers!), but all my teapot examples still seemed to want to link against /usr/lib/w32api/*32.a, which I gather are not touched by the Xorg installation. I tried pointing my teapot app to /usr/X11R6/lib, which has these intriguingly named libraries: libGL-1.dll.a libGL.dll.a libGLU-1.dll.a libGLU.dll.a libGLw.a However, trying to link against those spat out lots of undefined references: make[1]: Entering directory `/home/ziegm/opengl/teapot' g++ teapot.o -L/usr/X11R6/lib -lglut -lGLU -lGL -o teapot teapot.o:teapot.cpp:(.text+0xd2): undefined reference to [EMAIL PROTECTED]' teapot.o:teapot.cpp:(.text+0xe1): undefined reference to [EMAIL PROTECTED]' teapot.o:teapot.cpp:(.text+0x11d): undefined reference to [EMAIL PROTECTED]' teapot.o:teapot.cpp:(.text+0x159): undefined reference to [EMAIL PROTECTED]' teapot.o:teapot.cpp:(.text+0x1fe): undefined reference to [EMAIL PROTECTED]' teapot.o:teapot.cpp:(.text+0x27c): undefined reference to [EMAIL PROTECTED]' ...etc My assumption (!) from those results is that the full Xorg build is still "noticing" that I'm on Cygwin/Windows, and is therefore "helpfully" linking its own code against the w32api/MS libraries. (I really don't understand enough about this process to confirm or refute that theory, however.) However, I do see that the Mesa code shipped with Xorg under "extras" is indeed being compiled and linked into an "libOSMesa.dll.a" archive. However, linking against that didn't resolve any of the above linker errors. To try to confirm whether these files were even being used, I added a bunch of "printf's" to extras/Mesa/src/mesa/*/*light.c (apparently symlinked to lib/GL/mesa and programs/Xserver/GL/mesa), yet running teapot (linked against /usr/lib/w32api) generated nary a message. Am I even on the right track? Is there an easier way to do this? If you needed to intercept and customize a few specific OpenGL functions (say, the lighting model), under Windows, preferably via Cygwin, how would you go about it? Thank you for any help you may provide, Mark Zieg
