</para>
</sect2>
- <sect2>
- <title>OpenGL library thread-safety</title>
-
- <para>
- After that, the script checks if the OpenGL library relies
- or not on the pthread library to provide thread safety (most
- 'modern' OpenGL libraries do).
- </para>
- <para>
- If the OpenGL library explicitly links in libpthread (you
- can check it with a <command>ldd libGL.so</command>), you
- need to force OpenGL support by starting
- <command>configure</command> with the
- <parameter>--enable-opengl</parameter> flag.
- </para>
- <para>
- The reason to this is that Wine contains some hacks done by
- Ove to cohabit with pthread that are known to work well in
- most of the cases (glibc 2.1.x). On the other hand, we never
- got Wine to work with glibc 2.0.6. Thus, I deemed preferable
- to play it safe : by default, I suppose that the hack won't
- work and that it's the user's responsibility to enable it.
- </para>
- <para>
- Anyway, it should be pretty safe to build with
- <parameter>--enable-opengl</parameter>.
- </para>
- </sect2>
-
<sect2>
<title>OpenGL library itself</title>
<para>
To check for the presence of 'libGL' on the system, the
script checks if it defines the
- <function>glXCreateContext</function> function. There should
- be no problem here.
+ <function>glXCreateContext</function> function.
</para>
</sect2>
function. Your OpenGL library needs to have this function
defined for Wine to be able to support OpenGL.
</para>
- <para>
- If your library does not provide it, you are out of luck.
- </para>
- <note>
- <para>
- this is not completely true as one could rewrite a
- <function>glXGetProcAddressARB</function> replacement
- using <function>dlopen</function> and friends, but well,
- telling people to upgrade is easier :-).
- </para>
- </note>
</sect2>
</sect1>
- <sect1 id="opengl-configure">
- <title>How to configure</title>
-
- <para>
- Configuration is quite easy : once OpenGL support has been
- built in Wine, this internal OpenGL driver will be used each
- time an application tries to load
- <filename>opengl32.dll</filename>.
- </para>
- <para>
- Due to restrictions (that do not exist in Windows) on OpenGL
- contexts, if you want to prevent the screen to flicker when
- using OpenGL applications (all games are using double-buffered
- contexts), you need to set the following option in your
- <filename>~/.wine/config</filename> file
- in the [x11drv] section :
- </para>
- <programlisting>
-DesktopDoubleBuffered = Y
- </programlisting>
- <para>
- and to run Wine with the <parameter>--desktop</parameter>
- option.
- </para>
- </sect1>
-
<sect1 id="opengl-works">
<title>How it all works</title>
choosing if one wants a depth / alpha buffer, the size
of these buffers, ...) and to do the 'page flipping' in
double buffer mode. This is implemented in
- <filename>graphics/x11drv/opengl.c</filename> (all these
+ <filename>dlls/x11drv/opengl.c</filename> (all these
functions are part of Wine's graphic driver function
pointer table and thus could be reimplemented if ever Wine
works on another Windowing system than X).
</sect1>
<sect1 id="opengl-problems">
- <title>Known problems - shortcomings</title>
-
- <sect2>
- <title>Missing GLU32.DLL</title>
-
- <para>
- GLU is a library that is layered upon OpenGL. There is a
- 100% correspondence between the
- <filename>libGLU.so</filename> that is used on Linux and
- <filename>GLU32.DLL</filename>.
- </para>
- <para>
- As for the moment, I did not create a set of thunks to support this
- library natively in Wine (it would easy to do, but I am waiting for
- a better solution than adding another autogenerated thunk file), you
- can always download anywhere on the net (it's free) a
- <filename>GLU32.DLL</filename> file (by browsing, for example,
- <ulink url="http://www.dll-files.com/dllindex/index.shtml">
- http://www.dll-files.com/dllindex/index.shtml</ulink>).
- </para>
- </sect2>
-
- <sect2>
- <title>OpenGL not detected at configure time</title>
-
- <para>
- See section (I) for a detailed explanation of the
- <filename>configure</filename> requirements.
- </para>
- </sect2>
+ <title>Known problems</title>
<sect2>
<title>When running an OpenGL application, the screen flickers</title>
<para>
- See section (II) for how to create the context
- double-buffered and thus preventing this flicker effect.
+ Due to restrictions (that do not exist in Windows) on OpenGL
+ contexts, if you want to prevent the screen to flicker when
+ using OpenGL applications (all games are using double-buffered
+ contexts), you need to set the following option in your
+ <filename>~/.wine/config</filename> file
+ in the <literal>[x11drv]</literal> section:
+ <programlisting>
+DesktopDoubleBuffered = Y
+ </programlisting>
+ and to run Wine in desktop mode.
</para>
</sect2>
<sect2>
- <title>Wine gives me the following error message : </title>
+ <title>Unknown extension error message:</title>
<screen>
Extension defined in the OpenGL library but NOT in opengl_ext.c...
was NOT found in Wine's extension registry.
</para>
<para>
- This can come from two causes :
- </para>
-
+ This can come from two causes:
<orderedlist>
<listitem>
<para>
</para>
</listitem>
</orderedlist>
+ </para>
<para>
- If you have this, run with <parameter>--debugmsg
- +opengl</parameter> and send me
- <email>lionel.ulmer@free.fr</email> the TRACE.
+ If you have this, run with <parameter>--debugmsg +opengl</parameter>
+ and send me <email>lionel.ulmer@free.fr</email> the TRACE.
</para>
</sect2>
create a dummy <filename>.c</filename> file :
</para>
<programlisting>
-int main(void) {
+int main(void)
+{
return 0;
}
</programlisting>