Странное поведение Blitz SDL

Мое изображение загружается правильно, но
на самом деле не отображается, если я не перетаскиваю окно консоли поверх дисплея SDL.
Отображаются только те части экрана SDL, которые перекрываются в окне консоли, поэтому я могу
по существу «рисует» изображение при использовании окна консоли и после этого оно остается.

#include "SDL.h"
class Game

private:
SDL_Surface* displayWindow_;
//Rest of class

};

Ключевая функция: (обратите внимание, GetWallpaper () возвращает действительный указатель)

void Game::Render(){
GameState* currentGameState = gameStateManager_->GetCurrentState();
if(currentGameState)
{
surface::Draw(currentGameState->GetWallpaper(), displayWindow_, 0, 0);
SDL_Flip(currentGameState->GetWallpaper());
}
return;
}

в заключение

bool surface::Draw(SDL_Surface* sourceSurface, SDL_Surface* targetSurface,
int x, int y){
if(sourceSurface == NULL || targetSurface == NULL)
return false;

SDL_Rect targetRectangle;

targetRectangle.x = x;
targetRectangle.y = y;

SDL_BlitSurface(sourceSurface, NULL, targetSurface, &targetRectangle);

return true;
}

Кто-нибудь может пролить свет на это?

1

Решение

Судя по вашему коду, вы переворачиваете не ту поверхность:

SDL_Flip(currentGameState->GetWallpaper());

Вы должны пройти SDL_Flip() указатель на текущую поверхность видео (дисплея), обычно это тот, который вы получаете от вызова SDL_SetVideoMode(), В вашем случае это, кажется, displayWindow_,

Как в стороне — поведение, которое вы наблюдали, объясняется этой цитатой из SDL_Flip () документация:

Поверхность экрана программного обеспечения также обновляется автоматически, когда перерисовываются части окна SDL, вызванные перекрытием окон или восстановлением из пиктограммы.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]