diff options
| author | Ryan Houdek <Sonicadvance1@Gmail.com> | 2014-01-18 04:11:59 +0000 |
|---|---|---|
| committer | Ryan Houdek <Sonicadvance1@Gmail.com> | 2014-01-18 04:11:59 +0000 |
| commit | 839df31347cd1331c5426c2eae549371d7ae160f (patch) | |
| tree | 48259531b09561eb7f703d01049a987d75a99910 /Source/Core/VideoBackends/Software/SWRenderer.cpp | |
| parent | 0a5bd83af2917534501537c36d7ed25cd1cef31c (diff) | |
Merge of GL-AutoChoose.
This branch is the final step of fully supporting both OpenGL and OpenGL ES in the same binary.
This of course only applies to EGL and won't work for GLX/AGL/WGL since they don't really support GL ES.
The changes here actually aren't too terrible, basically change every #ifdef USE_GLES to a runtime check.
This adds a DetectMode() function to the EGL context backend.
EGL will iterate through each of the configs and check for GL, GLES3_KHR, and GLES2 bits
After that it'll change the mode from _DETECT to whichever one is the best supported.
After that point we'll just create a context with the mode that was detected
Diffstat (limited to 'Source/Core/VideoBackends/Software/SWRenderer.cpp')
| -rw-r--r-- | Source/Core/VideoBackends/Software/SWRenderer.cpp | 36 |
1 files changed, 20 insertions, 16 deletions
diff --git a/Source/Core/VideoBackends/Software/SWRenderer.cpp b/Source/Core/VideoBackends/Software/SWRenderer.cpp index e06df942b6..8e69708b3d 100644 --- a/Source/Core/VideoBackends/Software/SWRenderer.cpp +++ b/Source/Core/VideoBackends/Software/SWRenderer.cpp @@ -25,9 +25,7 @@ static std::string s_sScreenshotName; // Rasterfont isn't compatible with GLES // degasus: I think it does, but I can't test it -#ifndef USE_GLES RasterFont* s_pfont = NULL; -#endif void SWRenderer::Init() { @@ -38,23 +36,28 @@ void SWRenderer::Shutdown() { glDeleteProgram(program); glDeleteTextures(1, &s_RenderTarget); -#ifndef USE_GLES - delete s_pfont; - s_pfont = 0; -#endif + if (GLInterface->GetMode() == GLInterfaceMode::MODE_OPENGL) + { + delete s_pfont; + s_pfont = 0; + } } void CreateShaders() { static const char *fragShaderText = - "varying " PREC " vec2 TexCoordOut;\n" + "#if GL_ES\n" + "precision highp float;\n" + "#endif\n" + "varying vec2 TexCoordOut;\n" "uniform sampler2D Texture;\n" "void main() {\n" - " " PREC " vec4 tmpcolor;\n" - " tmpcolor = texture2D(Texture, TexCoordOut);\n" - " gl_FragColor = tmpcolor;\n" + " gl_FragColor = texture2D(Texture, TexCoordOut);\n" "}\n"; static const char *vertShaderText = + "#if GL_ES\n" + "precision highp float;\n" + "#endif\n" "attribute vec4 pos;\n" "attribute vec2 TexCoordIn;\n " "varying vec2 TexCoordOut;\n " @@ -80,10 +83,11 @@ void SWRenderer::Prepare() CreateShaders(); // TODO: Enable for GLES once RasterFont supports GLES -#ifndef USE_GLES - s_pfont = new RasterFont(); - glEnable(GL_TEXTURE_2D); -#endif + if (GLInterface->GetMode() == GLInterfaceMode::MODE_OPENGL) + { + s_pfont = new RasterFont(); + glEnable(GL_TEXTURE_2D); + } GL_REPORT_ERRORD(); } @@ -96,7 +100,8 @@ void SWRenderer::SetScreenshot(const char *_szFilename) void SWRenderer::RenderText(const char* pstr, int left, int top, u32 color) { -#ifndef USE_GLES + if (GLInterface->GetMode() != GLInterfaceMode::MODE_OPENGL) + return; int nBackbufferWidth = (int)GLInterface->GetBackBufferWidth(); int nBackbufferHeight = (int)GLInterface->GetBackBufferHeight(); glColor4f(((color>>16) & 0xff)/255.0f, ((color>> 8) & 0xff)/255.0f, @@ -105,7 +110,6 @@ void SWRenderer::RenderText(const char* pstr, int left, int top, u32 color) left * 2.0f / (float)nBackbufferWidth - 1, 1 - top * 2.0f / (float)nBackbufferHeight, 0, nBackbufferWidth, nBackbufferHeight); -#endif } void SWRenderer::DrawDebugText() |
