mirror of
https://github.com/narzoul/DDrawCompat
synced 2024-12-30 08:55:36 +01:00
Fixed forced pixel format application to surfaces
Because the actual display mode is always forced to 32 bits color depth, surfaces that would be created without a pixel format need to be explicitly set to the emulated display mode's pixel format that the application expects, rather than letting them use the actual display mode's pixel format. However, the emulated pixel format was being forced on surface types that aren't normal surfaces and shouldn't inherit the display mode's pixel format (e.g. vertex buffers and depth buffers), which prevented some of these surfaces from being created correctly. Now the surface type checks are more restrictive.
This commit is contained in:
parent
61efdcb438
commit
9461e7357c
@ -46,7 +46,12 @@ HRESULT STDMETHODCALLTYPE CompatDirectDraw<TDirectDraw>::CreateSurface(
|
||||
else
|
||||
{
|
||||
if (CompatPrimarySurface::displayMode.pixelFormat.dwSize != 0 &&
|
||||
!(lpDDSurfaceDesc->dwFlags & DDSD_PIXELFORMAT))
|
||||
!(lpDDSurfaceDesc->dwFlags & DDSD_PIXELFORMAT) &&
|
||||
(lpDDSurfaceDesc->dwFlags & DDSD_WIDTH) &&
|
||||
(lpDDSurfaceDesc->dwFlags & DDSD_HEIGHT) &&
|
||||
(lpDDSurfaceDesc->dwFlags & DDSD_CAPS) &&
|
||||
(lpDDSurfaceDesc->ddsCaps.dwCaps & (DDSCAPS_3DDEVICE | DDSCAPS_BACKBUFFER | DDSCAPS_FLIP |
|
||||
DDSCAPS_FRONTBUFFER | DDSCAPS_OFFSCREENPLAIN | DDSCAPS_OVERLAY | DDSCAPS_TEXTURE)))
|
||||
{
|
||||
lpDDSurfaceDesc->dwFlags |= DDSD_PIXELFORMAT;
|
||||
lpDDSurfaceDesc->ddpfPixelFormat = CompatPrimarySurface::displayMode.pixelFormat;
|
||||
|
Loading…
x
Reference in New Issue
Block a user