Есть проект, ссылку на которую сейчас дам.
Запускаю исполняемый файл на Linux - все без тормазов.
Собираю под PSP - жуткие лаги.
main.c выглядет так:
int main()
{
InitSDL(); //Ясно
LoadBlock();//Грузим текстуры в bmp
DrawBG(); //рисуем задний фон
while(game==0)
{
if (build==0){ BuildMap(); } //Генерируем мир
SDL_Delay(100); //ФПС
while(SDL_PollEvent(&event))
{
if (event.type==SDL_QUIT) {game=1;} //Выход
}
keyss = SDL_GetKeyState(NULL);
if(keyss[SDLK_RIGHT]){ReDraw(); posX-=0.2; } //ReDraw - это всего лишь DrawBG... т.е я вначале рисую фон, меняю pos,
//после этого идет на RenderMap, где прогоняется массив с картой, и рисуется уровень
if(keyss[SDLK_LEFT]){ReDraw(); posX+=0.2; }
if(keyss[SDLK_UP]){ReDraw(); posY+=0.2;}
if(keyss[SDLK_DOWN]){ReDraw(); posY-=0.2;}
//MoveP(posX,posY);
//FPS
RenderMap(); //см ниже
SDL_Flip(screen);//Вывод из буфера(наверно к UpdateRects обращается)
}
SDL_Quit();
return 0;
}
RenderMap():
void RenderMap()
{
int x,y;
for (x=0; x < gX; x++) //gX -макс значение ширины мира
{
for (y=0; y < gY-1; y++) //gY- макс высота
{
if (posX > 0) {posX=0;} //Левая граница
if (posX < (-135)) {posX=-135;} //Правая граница
DrawMap(map[y][x],x+posX-cameraX,y+posY-cameraY); //выресовка
}
}
Мне кажется, проблема в неправльном рендеренге... уж больно странно рендерить, постоянно рисуя фон сверху...
Кто что может сказать по этому поводу?
}