This is the mail archive of the
cygwin-xfree@cygwin.com
mailing list for the Cygwin XFree86 project.
Re: OpenGL header problems
- From: Igor Pechtchanski <pechtcha at cs dot nyu dot edu>
- To: cygwin-xfree at cygwin dot com
- Date: Mon, 1 Mar 2004 12:10:51 -0500 (EST)
- Subject: Re: OpenGL header problems
- References: <4042CB5B.9020503@msu.edu>
- Reply-to: cygwin-xfree at cygwin dot com
- Reply-to: cygwin-xfree at cygwin dot com
On Mon, 1 Mar 2004, Harold L Hunt II wrote:
> As I mentioned in my email about enabling indirect OpenGL acceleration,
> there are some problems when trying to link to -lopengl32.
>
> I tracked this down to problems with the way that
> /usr/include/w32api/GL/gl.h decorates the function declarations for the
> gl* functions. There are some collisions between the way that the
> standard windows headers define WINGDIAPI and APIENTRY and the way that
> gl.h expects them to be.
>
> However, the problem is a little trickier than just that: I added a call
> to glPixelStorei in Xserver/hw/xwin/InitOutput.c (without #including any
> opengl headers) and instead made my own prototype for glPixelStorei. If
> I made it:
>
> void __stdcall glPixelStorei (unsigned int, int);
>
> then the linker would complain about how it had to fixup a reference to
> glPixelStorei as _glPixelStorei@8. But that is exactly what the
> __stdcall was supposed to do, so I am getting a little confused about
> why the prototype was being ignored.
>
> I need an expert on __stdcall and w32api headers to give me a hand here.
> Igor, I saw a post you made on this subject before, so I am counting
> on you :)
>
> Once this little trick is solved we will have to figure out how to get
> the proper headers in exports/include/GL/; that directory currently
> getes some Mesa headers in it. I'm not sure if we can cleanly disable
> that and point to the w32api OpenGL headers instead.
>
> Harold
Harold,
I'm by no means an expert, and I can't seem to reproduce it. Could you
please post the exact gcc invocation that exhibits these symptoms?
Looking at ld's info page, there are a couple of options that could be
passed to the linker to modify this behavior. It may also be a problem
with the import lib, for all I know... Is the build seeing the right
libraries?
Also, the GL/gl.h header doesn't actually use WINGDIAPI, and GLAPI is
defined to be "extern" on Cygwin. Your declaration, however, seems
correct. Just for kicks, could you try reverting to including GL/gl.h in
Xserver/hw/xwin/InitOutput.c and run the build command for that file with
a "-E" in CFLAGS? That should produce a preprocessed version of
Xserver/hw/xwin/InitOutput.c, so you can see exactly how glPixelStorei is
declared.
Igor
--
http://cs.nyu.edu/~pechtcha/
|\ _,,,---,,_ pechtcha@cs.nyu.edu
ZZZzz /,`.-'`' -. ;-;;,_ igor@watson.ibm.com
|,4- ) )-,_. ,\ ( `'-' Igor Pechtchanski, Ph.D.
'---''(_/--' `-'\_) fL a.k.a JaguaR-R-R-r-r-r-.-.-. Meow!
"I have since come to realize that being between your mentor and his route
to the bathroom is a major career booster." -- Patrick Naughton