On Sat, 3 Apr 2004 10:26:12 +0200 Lionel Ulmer <[EMAIL PROTECTED]> wrote:
> Usually, games use the Clipper to do 'non-full screen' DirectX applications. > There is no way to do a work-around to have it running in full-screen :-) ? While it doesn't make sense it does use the Clipper even in fullscreen mode. :P A little hacking, using FIXME() to reveal some info (I didn't want to enable TRACE() because it makes the app way too slow :P): fixme:ddraw:Main_DirectDrawClipper_SetClipList (0x47c9cfe0)->SetClipList(0x49d8cbe0,0) fixme:ddraw:Main_DirectDrawClipper_SetClipList --------- RGNDATA ---------- fixme:ddraw:Main_DirectDrawClipper_SetClipList dwSize: 32 fixme:ddraw:Main_DirectDrawClipper_SetClipList nCount: 3 fixme:ddraw:Main_DirectDrawClipper_SetClipList rcBound: 313,234,365,265 fixme:ddraw:Main_DirectDrawClipper_SetClipList ---------------------------- fixme:ddraw:DIB_DirectDrawSurface_Blt (0x47c9bba8)->(0x406dfd34,0x46c4c640,0x406dfd24,00020000,0x406dfc94) fixme:ddraw:DIB_DirectDrawSurface_Blt destrect :313x234-365x265 fixme:ddraw:DIB_DirectDrawSurface_Blt srcrect :313x234-365x265 fixme:ddraw:DIB_DirectDrawSurface_Blt flags: DDBLT_ROP > > Anyway, all this clipping is not really implemented properly as most of the > effort was spent on full screen apps. I might be up for fixing that, at least partially :P > As far as I can see in the code, the > only case supported with clipping is the case where only one rectangle is > given in the clip list via the SetHWnd method (see, for example, > User_copy_to_screen in dlls/ddraw/dsurface/user.c) which is the 'standard' > case for windowed DirectX applications (like Media player) : a menu bar + a > DirectX display zone. > I'll have a look at that. I did implement SetClipList/GetClipList even though I did it a bit hackishly IMO, it dosen't give any problems :P > Otherwise (ie multiple rectangles), you should check if you > can support with the 'BitBlt' API something like the 'XSetClipRectangles' > X11 API (which can't be called directly from DirectX anymore) which would > prevent us rewriting in the DirectX code some generic 'multi-rectangle' > clipping code. I'm guessing that the current DX implementation uses a user32-based rendering via BitBlit? I know that DX allows for HAL and User32-based drawing. I'll have a look at the XSetClipRectangles() man page and hope and pray that I can find a way to implement this :P Any further help you could give me would be appreciated. Thanks, Tim