Fix software rendering (disable vsync, fix null pointer de-ref)

This commit is contained in:
Lucas Pope
2014-03-27 02:48:06 +09:00
parent f0afe0a080
commit 95a44a0a0d
2 changed files with 7 additions and 5 deletions

View File

@@ -1403,11 +1403,12 @@ void CreateMainFrame(FrameCreationCallback inOnFrame, int inWidth, int inHeight,
int renderFlags = 0; int renderFlags = 0;
if (opengl) renderFlags |= SDL_RENDERER_ACCELERATED; if (opengl) renderFlags |= SDL_RENDERER_ACCELERATED;
if (vsync) renderFlags |= SDL_RENDERER_PRESENTVSYNC; if (opengl && vsync) renderFlags |= SDL_RENDERER_PRESENTVSYNC;
renderer = SDL_CreateRenderer (window, -1, renderFlags); renderer = SDL_CreateRenderer (window, -1, renderFlags);
if (opengl) sgIsOGL2 = (inFlags & (wfAllowShaders | wfRequireShaders)); if (opengl) sgIsOGL2 = (inFlags & (wfAllowShaders | wfRequireShaders));
else sgIsOGL2 = false;
if (!renderer && (inFlags & wfHW_AA_HIRES || inFlags & wfHW_AA)) { if (!renderer && (inFlags & wfHW_AA_HIRES || inFlags & wfHW_AA)) {
// if no window was created and AA was enabled, disable AA and try again // if no window was created and AA was enabled, disable AA and try again
@@ -1422,7 +1423,7 @@ void CreateMainFrame(FrameCreationCallback inOnFrame, int inWidth, int inHeight,
// if opengl is enabled and no window was created, disable it and try again // if opengl is enabled and no window was created, disable it and try again
fprintf(stderr, "OpenGL is not available. Retrying without. (%s)\n", SDL_GetError()); fprintf(stderr, "OpenGL is not available. Retrying without. (%s)\n", SDL_GetError());
opengl = false; opengl = false;
renderFlags &= ~SDL_RENDERER_ACCELERATED; requestWindowFlags &= ~SDL_WINDOW_OPENGL;
} }
else else
{ {

View File

@@ -1952,10 +1952,11 @@ void Stage::RenderStage()
for(int eye = start; eye <= end; eye++) { for(int eye = start; eye <= end; eye++) {
render.Target().mHardware->SetS3DEye(eye);
if (render.Target().IsHardware()) if (render.Target().IsHardware())
{
render.Target().mHardware->SetS3DEye(eye);
render.Target().mHardware->SetQuality(quality); render.Target().mHardware->SetQuality(quality);
}
RenderState state(0, GetAA() ); RenderState state(0, GetAA() );