improve transparancy for 32bit rendering

This commit is contained in:
Anders Jenbo 2025-06-30 21:03:22 +02:00
parent b0532379cc
commit 3266c8e008

View File

@ -926,7 +926,7 @@ LPDIRECTDRAWSURFACE MxDisplaySurface::VTable0x44(
transparentColor = RGB555_CREATE(0x1f, 0, 0x1f); transparentColor = RGB555_CREATE(0x1f, 0, 0x1f);
break; break;
default: default:
transparentColor = RGB8888_CREATE(0xff, 0, 0xff, 0); transparentColor = RGB8888_CREATE(0, 0, 0, 0);
break; break;
} }
@ -971,25 +971,11 @@ LPDIRECTDRAWSURFACE MxDisplaySurface::VTable0x44(
surfacePtr += adjustedPitch; surfacePtr += adjustedPitch;
} }
if (p_transparent && surface) {
DDCOLORKEY key;
key.dwColorSpaceLowValue = key.dwColorSpaceHighValue = transparentColor;
surface->SetColorKey(DDCKEY_SRCBLT, &key);
}
surface->Unlock(ddsd.lpSurface); surface->Unlock(ddsd.lpSurface);
if (p_transparent && surface) { if (p_transparent && surface && bytesPerPixel != 4) {
DDCOLORKEY key; DDCOLORKEY key;
if (bytesPerPixel == 1) { key.dwColorSpaceLowValue = key.dwColorSpaceHighValue = transparentColor;
key.dwColorSpaceLowValue = key.dwColorSpaceHighValue = 0;
}
else if (bytesPerPixel == 2) {
key.dwColorSpaceLowValue = key.dwColorSpaceHighValue = RGB555_CREATE(0x1f, 0, 0x1f);
}
else {
key.dwColorSpaceLowValue = key.dwColorSpaceHighValue = RGB8888_CREATE(0xff, 0, 0xff, 0);
}
surface->SetColorKey(DDCKEY_SRCBLT, &key); surface->SetColorKey(DDCKEY_SRCBLT, &key);
} }
} }