1
0
mirror of https://github.com/blawar/GLideN64.git synced 2024-07-02 09:03:37 +00:00

Make PostProcessor GLES2 compatible.

This commit is contained in:
Sergey Lipskiy 2015-05-14 20:26:08 +06:00
parent ca0844c57d
commit d105a2a8a1
2 changed files with 32 additions and 1 deletions

View File

@ -24,6 +24,18 @@ SHADER_VERSION
"} \n"
;
static const char* copyShader =
SHADER_VERSION
"in mediump vec2 vTexCoord; \n"
"uniform sampler2D Sample0; \n"
"out lowp vec4 fragColor; \n"
" \n"
"void main() \n"
"{ \n"
" fragColor = texture2D(Sample0, vTexCoord); \n"
"} \n"
;
static const char* extractBloomShader =
SHADER_VERSION
"in mediump vec2 vTexCoord; \n"
@ -250,6 +262,14 @@ void PostProcessor::init()
assert(loc >= 0);
glUniform1i(loc, config.bloomFilter.thresholdLevel);
#ifdef GLES2
m_copyProgram = _createShaderProgram(vertexShader, copyShader);
glUseProgram(m_copyProgram);
loc = glGetUniformLocation(m_copyProgram, "Sample0");
assert(loc >= 0);
glUniform1i(loc, 0);
#endif
m_seperableBlurProgram = _createShaderProgram(vertexShader, seperableBlurShader);
glUseProgram(m_seperableBlurProgram);
loc = glGetUniformLocation(m_seperableBlurProgram, "Sample0");
@ -295,6 +315,9 @@ void PostProcessor::init()
void PostProcessor::destroy()
{
if (m_copyProgram != 0)
glDeleteProgram(m_copyProgram);
m_copyProgram = 0;
if (m_extractBloomProgram != 0)
glDeleteProgram(m_extractBloomProgram);
m_extractBloomProgram = 0;
@ -372,6 +395,12 @@ void PostProcessor::process(FrameBuffer * _pBuffer)
_setGLState();
OGLVideo & ogl = video();
#ifdef GLES2
glBindFramebuffer(GL_DRAW_FRAMEBUFFER, m_FBO_original);
textureCache().activateTexture(0, _pBuffer->m_pTexture);
glUseProgram(m_copyProgram);
glDrawArrays(GL_TRIANGLE_STRIP, 0, 4);
#else
glBindFramebuffer(GL_READ_FRAMEBUFFER, _pBuffer->m_FBO);
glBindFramebuffer(GL_DRAW_FRAMEBUFFER, m_FBO_original);
glBlitFramebuffer(
@ -379,6 +408,7 @@ void PostProcessor::process(FrameBuffer * _pBuffer)
0, 0, ogl.getWidth(), ogl.getHeight(),
GL_COLOR_BUFFER_BIT, GL_LINEAR
);
#endif
glBindFramebuffer(GL_READ_FRAMEBUFFER, 0);

View File

@ -16,7 +16,7 @@ public:
private:
PostProcessor() :
m_extractBloomProgram(0), m_seperableBlurProgram(0), m_glowProgram(0), m_bloomProgram(0),
m_extractBloomProgram(0), m_seperableBlurProgram(0), m_glowProgram(0), m_bloomProgram(0), m_copyProgram(0),
m_FBO_original(0), m_FBO_glowMap(0), m_FBO_blur(0),
m_pTextureOriginal(NULL), m_pTextureGlowMap(NULL), m_pTextureBlur(NULL) {}
PostProcessor(const PostProcessor & _other);
@ -25,6 +25,7 @@ private:
GLuint m_seperableBlurProgram;
GLuint m_glowProgram;
GLuint m_bloomProgram;
GLuint m_copyProgram;
GLuint m_FBO_original;
GLuint m_FBO_glowMap;