Работаю с CDX Game Development Kit 3.1.
При попытке работать с полноэкранным изображением никак не могу заполнить один из буферов (насколько я понимаю, буфера 2; один, так сказать, рабочий, в котором собственно и происходят все изменения, а второй видимый).
BOOL cdx_Init()
{
Screen = new CDXScreen();
if (Screen==NULL)
CDXError( NULL , "Could not create CDXScreen object" );
if (Screen->CreateFullScreen(g_hWnd, 640, 480, 8)<0)
CDXError( Screen , "Could not set video mode 640x480x8" );
Logo = new CDXSurface();
if( Logo == NULL )
CDXError( Screen , "Could not create CDXSurface" );
if( !Logo->Create( Screen , "tiles.bmp" ) )
CDXError( Screen , "could not load file tiles.bmp into surface" );
Logo->DrawBlk(Screen->GetBack(),0,0, NULL);
return TRUE;
}
void cdx_DoFrame()
{
Screen->Flip(0,0,1); // Then display it
Sleep(3000);
}
Для приведенного выше примера первые три секунды будет картинка, потом три секунды черный экран. Добавление в cdx_Init() строчки Logo->DrawBlk(Screen->GetFront(),0,0, NULL); не помогает.
Причем, если код переписать с полноэкранного режима в оконное, т.е. if (Screen->CreateFullScreen(g_hWnd, 640, 480, 8)<0) заменить на if (Screen->CreateWindowed(g_hWnd, 640, 480)<0), то все в порядке.
Вопрос — как в полноэкранном режиме заполнить оба буфера одинаковым Surface'ом?
И еще — почему в оконном режиме резко (в разы) падает производительность?
Ну и до кучи

— как в CDX оптимальным образом сделать статичный фон, который никогда не перерисовывается — Surface, Tiles, Map или еще как-то?