2016-09-26 5 views
3

Когда я использую рендеринг программного обеспечения в моем проекте SDL2, все работает так, как ожидалось. например, когда код для создания SDL_Renderer выглядит следующим образом:SDL: вызов SDL_CreateRenderer Segfaults

this->renderer = SDL_CreateRenderer(this->window, -1, SDL_RENDERER_SOFTWARE); 

При использовании рендеринга оборудования, например, когда код для создания SDL_Renderer выглядит следующим образом:

this->renderer = SDL_CreateRenderer(this->window, -1, SDL_RENDERER_ACCELERATED); 

По какой-то причине, называя SDL_UpdateWindowSurface приводит к SEGFAULT. Я называю SDL_UpdateWindowSurface стандартным способом:

// Update window surface 
SDL_UpdateWindowSurface(window); 

Я знаю, что мой путь окно настройки правильно, так как запуск программы с Software Rendering SDL_Renderer работает просто отлично, и не дает Segfault.

Кто-нибудь знает, что может быть причиной этого? Кто-нибудь испытал что-то подобное раньше?

+1

С помощью этого небольшого кода это просто игра для угадывания для нас. –

+2

[Как создать минимальный, завершенный и проверяемый пример] (http://stackoverflow.com/help/mcve) –

+0

Извиняюсь, я отрегулирую свой вопрос, как только окажусь дома. – McMuffinton

ответ

1

SDL_GetWindowSurace документация говорит Вы не можете комбинировать это с 3D или API рендеринга в этом окне.. Либо создайте поверхность и обновите поверхность окна самостоятельно (и забудьте об аппаратном ускорении), либо используйте SDL_Renderer и никогда не прикасайтесь к поверхности окна (это даже не существует для ускоренного бэкэнд).