2016-09-26 3 views
3

Wenn ich Software Rendering in meinem SDL2-Projekt verwende, funktioniert alles wie erwartet. zB wenn der Code eine SDL_Renderer zum Erstellen sieht wie folgt aus:SDL: Aufrufen von SDL_CreateRenderer SegFaults

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

Wenn ich Hardware-Rendering verwenden, zB wenn der Code eine SDL_Renderer für die Erstellung wie folgt aussieht:

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

Aus irgendeinem Grund fordern SDL_UpdateWindowSurface führt zu einem SEGFAULT. Ich nenne SDL_UpdateWindowSurface in üblicher Weise:

// Update window surface 
SDL_UpdateWindowSurface(window); 

Ich weiß, dass die Art und Weise mein Fenster Setup korrekt ist, da das Programm mit einer Software läuft SDL_Renderer Rendering funktioniert gut, und ergibt keine SEGFAULT.

Hat jemand eine Idee, was könnte das verursachen? Hat jemand so etwas schon einmal erlebt?

+1

Mit diesem kleinen Code ist es nur ein Ratespiel für uns. –

+2

[So erstellen Sie ein minimales, vollständiges und verifizierbares Beispiel] (http://stackoverflow.com/help/mcve) –

+0

Entschuldigung, ich werde meine Frage anpassen, sobald ich zu Hause bin. – McMuffinton

Antwort

1

SDL_GetWindowSurace Dokumentation sagt Sie können dies nicht mit 3D oder der Rendering-API in diesem Fenster kombinieren.. Entweder Oberfläche generieren und Fensteroberfläche selbst aktualisieren (und Hardwarebeschleunigung vergessen) oder SDL_Renderer verwenden und niemals Fensteroberfläche berühren (es existiert nicht einmal für beschleunigtes Backend).