Hi,

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.

___________________________________
NOCC, http://nocc.sourceforge.net
--- 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);
 }
 
 /***********************************************************************

Reply via email to