|

楼主 |
发表于 2010-11-4 16:13:00
|
显示全部楼层
Re:如何建立ddraw 8位每像素surface
谢谢楼上,8位表面创建成功了,可是blt到屏幕不显示。
我贴一部分代码,帮我看一下。 :)
下面是建立调色板:
RGBQUAD* pal = (RGBQUAD*)new BYTE[ 1024 ];
if( ! pal)
return false;
f1.Seek(56, CFile::begin);
f1.Read( (BYTE*)pal, 1024);
PALETTEENTRY* pal2 = (PALETTEENTRY*)new BYTE[1024];
if( ! pal2)
return false;
for( int j = 0; j < 256; j++)
{
pal2[j].peRed = pal[j].rgbRed;
pal2[j].peGreen = pal[j].rgbGreen;
pal2[j].peBlue = pal[j].rgbBlue;
pal2[j].peFlags = PC_NOCOLLAPSE;
}
if( FAILED( pDDraw->CreatePalette( DDPCAPS_8BIT | DDPCAPS_INITIALIZE,
pal2, &pPal, NULL)))
{
return false;
}
/////////////////////////////////////////////////////////////////////////////////////////////
下面是设定调色板:
if( FAILED( tmpOP.bmp->SetPalette( pPal)))
{
return false;
}
////////////////////////////////////////////////////////////////////////////////////////////
下面是blt:
g_pDDraw->pSurfFront->Blt( &dr, g_pDDraw->vTilePix[26].bmp, &sr,
DDBLT_WAIT, &ddbf);
究竟问题出在哪?一点显示也没有。 :( |
|