opengl32 wglSwapLayerBuffers

Jesse Allen uh_ja at
Thu Jun 6 12:57:14 CDT 2002


I've been on a kind of rampage trying to Warcraft 3 working the best it can under Wine.  I have previously tried WineX, which works pretty much right out of their CVS.  WineX has some of D3D8 done, thus War3 works easily.  But however, it has some graphics bugs, and possible some what slower framerate than in Windows.

Warcraft 3 has a secondary, opengl graphics driver in it.  You can access it by running wine War3.exe -- -opengl for example.  But when doing this on either Wine or WineX it would say wglSwapLayerBuffers... stub !, and there would be no graphics output.  I investigated this and of course found that there was nothing there.  I searched through gl headers and the wine sources for an opengl equivilant, and found a SwapBuffers(hdc HDC) through GDI/x11drv?  I decided to call that from wglSwapLayerBuffers.  In doing that, this still ignored a parameter of UINT fuplanes.  I really don't know what fuplanes is for.  So this is not at all a complete implimination of this function.  An attached patch file shows my changes to wgl.c as from current release.

I went ahead and tried War3 again with opengl.  This time, it outputs graphics.  In comparison with D3D8, there are no graphical errors, and it seems slightly faster.  But DXGrab no longer works, but a quick solution is to switch to the same game resolution.  The game looks like its working perfectly now!!  No side affects have been seen with ignoring fuPlanes.

I'm haven't worked on wine before, but I'm willing to work with whoever to figure out how to correctly implement this function or others related to this.  Perhaps I can figure out what fuPlanes is?

Jesse Allen

cc me as I'm not subscribed to the mailing list.

-------------- next part --------------
--- wgl.c	2002-03-23 14:43:56.000000000 -0700
+++ wgl_modified.c	2002-06-05 19:04:52.000000000 -0700
@@ -435,9 +435,10 @@
 BOOL WINAPI wglSwapLayerBuffers(HDC hdc,
 				UINT fuPlanes) {
-  FIXME("(): stub !\n");
+  FIXME("(%08x,?) --> SwapBuffers(%08x) quickfix !\n",hdc,hdc);
-  return FALSE;
+/*  return FALSE; */
+  return SwapBuffers(hdc);

More information about the wine-devel mailing list