2016-09-26 93 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); 

我知道,我的窗戶的安裝方式是正確的,因爲一個軟件渲染SDL_Renderer運行的程序工作得很好,並且不產生段錯誤。

有沒有人知道可能是什麼原因造成的?有沒有人經歷過這樣的事情?

+1

有了這個小代碼,它只是我們猜測的遊戲。 –

+2

[如何創建一個最小,完整和可驗證的示例](http://stackoverflow.com/help/mcve) –

+0

道歉,我會在我回家後調整我的問題。 – McMuffinton

回答

1

SDL_GetWindowSurace文檔說您可能不會在此窗口中將其與3D或渲染API結合使用。。要麼自己生成曲面和更新窗口曲面(並且忘記硬件加速),要麼使用SDL_Renderer,也不要觸摸窗口曲面(它甚至不存在加速的後端)。