diff --git a/include/eepp/graphics/renderer/renderer.hpp b/include/eepp/graphics/renderer/renderer.hpp index 55aeb3f0b..fdda462b9 100644 --- a/include/eepp/graphics/renderer/renderer.hpp +++ b/include/eepp/graphics/renderer/renderer.hpp @@ -362,6 +362,8 @@ class EE_API Renderer { void waitForIdle(); protected: + static const Vector3ff& textureColorChannel( Int32 mode ); + static Renderer* sSingleton; enum RendererStateFlags { diff --git a/include/eepp/graphics/renderer/renderergl.hpp b/include/eepp/graphics/renderer/renderergl.hpp index 231e6aa9b..f3d2a9da0 100644 --- a/include/eepp/graphics/renderer/renderergl.hpp +++ b/include/eepp/graphics/renderer/renderergl.hpp @@ -14,8 +14,6 @@ class EE_API RendererGL : public Renderer { ~RendererGL(); - void init(); - GraphicsLibraryVersion version(); std::string versionStr(); diff --git a/src/eepp/graphics/renderer/renderer.cpp b/src/eepp/graphics/renderer/renderer.cpp index 31f77763e..0c21d2d1f 100644 --- a/src/eepp/graphics/renderer/renderer.cpp +++ b/src/eepp/graphics/renderer/renderer.cpp @@ -589,6 +589,15 @@ bool Renderer::setTextureColorMode( Int32 ) { return false; } +const Vector3ff& Renderer::textureColorChannel( Int32 mode ) { + static const Vector3ff channels[] = { { 0.f, 0.f, 0.f }, + { 1.f, 0.f, 0.f }, + { 0.f, 1.f, 0.f }, + { 0.f, 0.f, 1.f }, + { 1.f / 3.f, 1.f / 3.f, 1.f / 3.f } }; + return channels[mode]; +} + bool Renderer::isLineSmooth() { return BitOp::readBitKey( &mStateFlags, RSF_LINE_SMOOTH ); } diff --git a/src/eepp/graphics/renderer/renderergl.cpp b/src/eepp/graphics/renderer/renderergl.cpp index 45cae505b..76b0b544f 100644 --- a/src/eepp/graphics/renderer/renderergl.cpp +++ b/src/eepp/graphics/renderer/renderergl.cpp @@ -61,10 +61,6 @@ RendererGL::RendererGL() { RendererGL::~RendererGL() {} -void RendererGL::init() { - Renderer::init(); -} - bool RendererGL::ensureSubpixelShader() { #ifndef EE_GLES1 if ( mSubpixelShader ) @@ -121,6 +117,8 @@ bool RendererGL::setTextureColorMode( Int32 mode ) { #ifdef EE_GLES1 return false; #else + if ( mode < 0 || mode > 4 ) + return false; if ( mode != 0 && !ensureSubpixelShader() ) return false; if ( !mSubpixelShader || !mSubpixelShader->isValid() || mSubpixelChannelLoc == -1 ) @@ -136,12 +134,7 @@ bool RendererGL::setTextureColorMode( Int32 mode ) { Renderer::setShader( mSubpixelShader.get() ); mUsingSubpixelShader = true; } - static const Vector3ff channels[] = { { 0.f, 0.f, 0.f }, - { 1.f, 0.f, 0.f }, - { 0.f, 1.f, 0.f }, - { 0.f, 0.f, 1.f }, - { 1.f / 3.f, 1.f / 3.f, 1.f / 3.f } }; - mSubpixelShader->setUniform( mSubpixelChannelLoc, channels[mode] ); + mSubpixelShader->setUniform( mSubpixelChannelLoc, textureColorChannel( mode ) ); return true; #endif } diff --git a/src/eepp/graphics/renderer/renderergl3.cpp b/src/eepp/graphics/renderer/renderergl3.cpp index 9d40dee25..2d3235a5a 100644 --- a/src/eepp/graphics/renderer/renderergl3.cpp +++ b/src/eepp/graphics/renderer/renderergl3.cpp @@ -173,12 +173,7 @@ void RendererGL3::setShader( ShaderProgram* Shader ) { if ( mTextureColorMode_id != -1 ) mCurShader->setUniform( mTextureColorMode_id, mTextureColorMode ); if ( mTextureColorChannel_id != -1 && mTextureColorMode != 0 ) { - static const Vector3ff channels[] = { { 0.f, 0.f, 0.f }, - { 1.f, 0.f, 0.f }, - { 0.f, 1.f, 0.f }, - { 0.f, 0.f, 1.f }, - { 1.f / 3.f, 1.f / 3.f, 1.f / 3.f } }; - mCurShader->setUniform( mTextureColorChannel_id, channels[mTextureColorMode] ); + mCurShader->setUniform( mTextureColorChannel_id, textureColorChannel( mTextureColorMode ) ); } if ( -1 != mAttribsLoc[EEGL_VERTEX_ARRAY] ) diff --git a/src/eepp/graphics/renderer/renderergl3cp.cpp b/src/eepp/graphics/renderer/renderergl3cp.cpp index 8bbe6e405..e22ef6687 100644 --- a/src/eepp/graphics/renderer/renderergl3cp.cpp +++ b/src/eepp/graphics/renderer/renderergl3cp.cpp @@ -200,12 +200,7 @@ void RendererGL3CP::setShader( ShaderProgram* Shader ) { if ( mTextureColorMode_id != -1 ) mCurShader->setUniform( mTextureColorMode_id, mTextureColorMode ); if ( mTextureColorChannel_id != -1 && mTextureColorMode != 0 ) { - static const Vector3ff channels[] = { { 0.f, 0.f, 0.f }, - { 1.f, 0.f, 0.f }, - { 0.f, 1.f, 0.f }, - { 0.f, 0.f, 1.f }, - { 1.f / 3.f, 1.f / 3.f, 1.f / 3.f } }; - mCurShader->setUniform( mTextureColorChannel_id, channels[mTextureColorMode] ); + mCurShader->setUniform( mTextureColorChannel_id, textureColorChannel( mTextureColorMode ) ); } if ( -1 != mAttribsLoc[EEGL_VERTEX_ARRAY] ) diff --git a/src/eepp/graphics/renderer/renderergles2.cpp b/src/eepp/graphics/renderer/renderergles2.cpp index 3f0c38bb1..6a96f9621 100644 --- a/src/eepp/graphics/renderer/renderergles2.cpp +++ b/src/eepp/graphics/renderer/renderergles2.cpp @@ -227,12 +227,7 @@ void RendererGLES2::setShader( ShaderProgram* Shader ) { if ( mTextureColorMode_id != -1 ) mCurShader->setUniform( mTextureColorMode_id, mTextureColorMode ); if ( mTextureColorChannel_id != -1 && mTextureColorMode != 0 ) { - static const Vector3ff channels[] = { { 0.f, 0.f, 0.f }, - { 1.f, 0.f, 0.f }, - { 0.f, 1.f, 0.f }, - { 0.f, 0.f, 1.f }, - { 1.f / 3.f, 1.f / 3.f, 1.f / 3.f } }; - mCurShader->setUniform( mTextureColorChannel_id, channels[mTextureColorMode] ); + mCurShader->setUniform( mTextureColorChannel_id, textureColorChannel( mTextureColorMode ) ); } if ( -1 != mAttribsLoc[EEGL_VERTEX_ARRAY] ) diff --git a/src/eepp/graphics/renderer/rendererglshader.cpp b/src/eepp/graphics/renderer/rendererglshader.cpp index 5fca99084..7894db4e7 100644 --- a/src/eepp/graphics/renderer/rendererglshader.cpp +++ b/src/eepp/graphics/renderer/rendererglshader.cpp @@ -31,12 +31,7 @@ bool RendererGLShader::setTextureColorMode( Int32 mode ) { mTextureColorMode = mode; mCurShader->setUniform( mTextureColorMode_id, mode ); if ( mTextureColorChannel_id != -1 ) { - static const Vector3ff channels[] = { { 0.f, 0.f, 0.f }, - { 1.f, 0.f, 0.f }, - { 0.f, 1.f, 0.f }, - { 0.f, 0.f, 1.f }, - { 1.f / 3.f, 1.f / 3.f, 1.f / 3.f } }; - mCurShader->setUniform( mTextureColorChannel_id, channels[mode] ); + mCurShader->setUniform( mTextureColorChannel_id, textureColorChannel( mode ) ); } } return true;