|
我从网上下载了koules游戏的源代码学习,想把源码中的256色修改为24位或者16位的,同时修改屏幕分辨率为1024×768,可是调试的时候发现屏幕一团糟,只有三分之一的表面显示出来,明显地看出是256色的表面被强制作为24位的来显示后,由于显存中的数据只有要求的三分之一,导致显示出来的是三分之一大小的图像。
源码中创建调色板的函数:
if (palette)
palette->Release(), palette=0;
PALETTEENTRY pe[256];
ZeroMemory( pe, sizeof(pe) );
for( int i=0; i<ncolors; i++)
{
pe.peRed = quad.rgbRed;
pe.peGreen = quad.rgbGreen;
pe.peBlue = quad.rgbBlue;
}
HRESULT r=ddraw2->CreatePalette( DDPCAPS_8BIT | DDPCAPS_ALLOW256,
pe, &palette, 0 );
if (r!=DD_OK)
{
TRACE("failed to create DirectDraw palette\n");
return FALSE;
}
primsurf->SetPalette( palette );
现在就是想修改显示的图像的颜色深度。上面的函数创建了256色的调色板,直接修改这里好像不行。
在线急等,谢谢各位! |
|