|
D3D 2D材質(PNG File)如何設定ColorKey?
D3DXCreateTextureFromFileEx可以設定ColorKey,但是我必須知道哪一個顏色要設定為透空
可是PNG(或TGA,DDS)的圖檔格式我要如何知道他的Colorkey呢?
BOOL DoInit()
{
D3DPRESENT_PARAMETERS d3dpp;
D3DDISPLAYMODE d3ddm;
BYTE *Ptr;
#define PNG_WIDTH 256.0f
#define PNG_HEIGHT 256.0f
sVertex Verts[4] = {
{ 0.0f, 0.0f, 1.0f, 1.0f, 0.0f, 0.0f },
{ PNG_WIDTH, 0.0f, 1.0f, 1.0f, 1.0f, 0.0f },
{ 00.0f, PNG_HEIGHT, 1.0f, 1.0f, 0.0f, 1.0f },
{ PNG_WIDTH, PNG_HEIGHT, 1.0f, 1.0f, 1.0f, 1.0f }
};
// Do a windowed mode initialization of Direct3D
if((g_pD3D = Direct3DCreate8(D3D_SDK_VERSION)) == NULL)
return FALSE;
if(FAILED(g_pD3D->GetAdapterDisplayMode(D3DADAPTER_DEFAULT, &d3ddm)))
return FALSE;
ZeroMemory(&d3dpp, sizeof(d3dpp));
d3dpp.Windowed = TRUE;
d3dpp.SwapEffect = D3DSWAPEFFECT_DISCARD;
d3dpp.BackBufferFormat = d3ddm.Format;
d3dpp.EnableAutoDepthStencil = FALSE;
if(FAILED(g_pD3D->CreateDevice(D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL, g_hWnd,
D3DCREATE_SOFTWARE_VERTEXPROCESSING,
&d3dpp, &g_pD3DDevice)))
return FALSE;
// Create the vertex buffer and set data
g_pD3DDevice->CreateVertexBuffer(sizeof(sVertex)*4, 0, VERTEXFVF, D3DPOOL_DEFAULT, &g_pVB);
g_pVB->Lock(0,0, (BYTE**)& tr, 0);
memcpy(Ptr, Verts, sizeof(Verts));
g_pVB->Unlock();
// Load the texture map
D3DXCreateTextureFromFile(g_pD3DDevice, "Image1.png", &g_pTexture);
return TRUE;
} |
|