Вопрос по CDX
От: netaimaid  
Дата: 02.08.04 12:44
Оценка:
Работаю с 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 или еще как-то?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.