From: William F M. <mit...@ca...> - 2000-11-14 20:48:05
|
<mesa home>/include/GL/gl.h used to contain the lines /* * Apps can test for this symbol to do conditional compilation if needed. */ #define MESA but they are not there in the gl.h with version 3.4 (or any other file in include/GL). What happened to it? There is nothing in the VERSIONS file about it being removed. How is one now supposed to determine if the OpenGL library is Mesa for conditional compilation? (In my case, to determine whether to use the GLU 1.1 or GLU 1.2 tesselation routines.) Thanks, Bill -- William F. Mitchell Mathematical and Computational Sciences Division National Institute of Standards and Technology wil...@ni... http://math.nist.gov/~mitchell |
From: Brian P. <br...@va...> - 2000-11-14 22:24:12
|
William F Mitchell wrote: > > <mesa home>/include/GL/gl.h used to contain the lines > > /* > * Apps can test for this symbol to do conditional compilation if needed. > */ > #define MESA > > but they are not there in the gl.h with version 3.4 (or any other file in > include/GL). What happened to it? There is nothing in the VERSIONS file > about it being removed. I removed it because it really shouldn't be needed. People were mistakenly using it to test for certain extensions instead of testing for extensions the "right" way. > How is one now supposed to determine if the OpenGL > library is Mesa for conditional compilation? (In my case, to determine > whether to use the GLU 1.1 or GLU 1.2 tesselation routines.) At compile time, you'd test for GL_VERSION_1_2 being defined but at runtime you should also call gluGetString(GLU_VERSION) and see if "1.1" or "1.2" is returned. -Brian |
From: <le...@fu...> - 2000-11-15 01:27:42
|
> > How is one now supposed to determine if the OpenGL > > library is Mesa for conditional compilation? (In my case, to determine > > whether to use the GLU 1.1 or GLU 1.2 tesselation routines.) > > At compile time, you'd test for GL_VERSION_1_2 being defined > but at runtime you should also call gluGetString(GLU_VERSION) > and see if "1.1" or "1.2" is returned. Say, while we're on this topic, is there a reason why glGetString() always returns NULL on Mesa3D? -- Sincerely, ,"-_ \|/ -Capt. Taura M. , O=__ --X-- ..__ ,_JNMNNEO=_ /|\ OMNOUMmnne. {OMMNNNEEEEOO=_ UOOOBIOOOEOMMn. 'LONMMMMNNEEEOOO=.__..,,.. UUOOEUUOOOOOOOObe '"=OMMMMWNEEEOOOOO,"=OEEEOO=,._ OOUUUIEEIOONNOIUbe. "7OMMMMNNNNNWWEEEEOOOOOO" "'. EEBNNMMMNWNWWEEIMMNe. __ 7EMMMNNNNNWWWEEEEEEEOO. " . NNMMMMWWWMMMWEINMMMNn "=BBEEEEMMMMMMMMNNNWWWEEOOOOO=._ . http://furry.ao.net/~learfox/ |
From: Brian P. <br...@va...> - 2000-11-15 14:33:36
|
le...@fu... wrote: > > > > How is one now supposed to determine if the OpenGL > > > library is Mesa for conditional compilation? (In my case, to determine > > > whether to use the GLU 1.1 or GLU 1.2 tesselation routines.) > > > > At compile time, you'd test for GL_VERSION_1_2 being defined > > but at runtime you should also call gluGetString(GLU_VERSION) > > and see if "1.1" or "1.2" is returned. > > Say, while we're on this topic, is there a reason why glGetString() always > returns NULL on Mesa3D? You're probably calling it before binding a context (glXMakeCurrent). -Brian |
From: Stephen J B. <sj...@li...> - 2000-11-16 14:23:58
|
On Tue, 14 Nov 2000 le...@fu... wrote: > > > How is one now supposed to determine if the OpenGL > > > library is Mesa for conditional compilation? (In my case, to determine > > > whether to use the GLU 1.1 or GLU 1.2 tesselation routines.) > > > > At compile time, you'd test for GL_VERSION_1_2 being defined > > but at runtime you should also call gluGetString(GLU_VERSION) > > and see if "1.1" or "1.2" is returned. > > Say, while we're on this topic, is there a reason why glGetString() always > returns NULL on Mesa3D? It doesn't if it's called correctly...but if you are seeing that then it's 99% certain that you are trying to call it before you have a GL rendering context opened. The deal is (with both of these questions) that until you've opened a rendering context, you have not yet chosen which OpenGL driver you are going to use. In principal (although perhaps not yet in practice), you could have two graphics cards in your machine, one using Mesa and the other using (say) the nVidia OpenGL. Until you've opened that rendering context (a window on one or other of those two cards), glGetString can't tell you anything about the OpenGL driver because it doesn't know which one you'll ultimately choose. This can also happen when you are running the program on one machine and rendering the graphics on another. That's also the reason why the 'MESA' symbol should not be defined. That would tell you which OpenGL implementation just happened to be installed on the machine you are compiling on. However, you can (and I do) routinely compile on a machine with (say) a Voodoo-3 and Mesa - and run the program on another machine with (say) a GeForce and nVidia's OpenGL-for-Linux. If I actually relied on that symbol to turn some Mesa-specific code on - then that would fail when the program was run on the nVidia-based PC. In the end, you have to open a rendering context - and THEN query it to find out what code to run...which is why we need things like the OpenGL Application Binary Interface for Linux (http://oss.sgi.com/projects/ogl-sample/ABI) and specifically, glGetProcAddressARB() ---- Steve Baker (817)619-2657 (Vox/Vox-Mail) L3Com/Link Simulation & Training (817)619-2466 (Fax) Work: sj...@li... http://www.link.com Home: sjb...@ai... http://web2.airmail.net/sjbaker1 |