I'm currently pondering why this is happening or if this is normal.
I currently have Magenta RGB(255,0,255) set as a colorkey for using transparency with DirectDraw blitting and even for the Direct3D textures (the alpha still works!). This has served me perfectly until now. I wanted to start adding support for various displays and begin adding all th 16bit graphics. Along with a nice FPS increase for 16bit.
But, when I run in 16bit display mode, my transparent files, no longer are transparent. The color keys are correct as with the files saved formats, I've even tried running 32bit file types (that I know work) and they still show up as so.
16bit
http://img2.imageshack.us/img2/4654/16bit.jpg
32bit
http://img145.imageshack.us/img145/8964/32bit.jpg
If this is normal then I will just stick to 32bit for now.
Edit:
I wanted to post that I solved this, sometimes I dunno why I post, lol. Here is the solution, which was re'calc the RGB value to 16bit instead of 32bit. I used this function to handle this.
For Direct3D
Code:
Private Function DX_RGB2DX(R As Long, G As Long, B As Long) As Long
DX_RGB2DX = DirectX.CreateColorRGBA(CSng((1 / 255) * R), CSng((1 / 255) * G), CSng((1 / 255) * B), 0)
End Function
For DirectDraw
Code:
Private Function DX_RGBMagenta(ByVal tmp32Bit As Boolean) As Long
Dim tmpDDPF As DDPIXELFORMAT
If tmp32Bit = True Then
DX_RGBMagenta = RGB(255, 0, 255)
Else
Primary.GetPixelFormat tmpDDPF
DX_RGBMagenta = tmpDDPF.lBBitMask Or tmpDDPF.lRBitMask
End If
End Function