mirror of
https://github.com/blawar/GLideN64.git
synced 2024-07-07 03:13:49 +00:00
Make PostProcessor GLES2 compatible.
This commit is contained in:
parent
ca0844c57d
commit
d105a2a8a1
|
@ -24,6 +24,18 @@ SHADER_VERSION
|
||||||
"} \n"
|
"} \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 =
|
static const char* extractBloomShader =
|
||||||
SHADER_VERSION
|
SHADER_VERSION
|
||||||
"in mediump vec2 vTexCoord; \n"
|
"in mediump vec2 vTexCoord; \n"
|
||||||
|
@ -250,6 +262,14 @@ void PostProcessor::init()
|
||||||
assert(loc >= 0);
|
assert(loc >= 0);
|
||||||
glUniform1i(loc, config.bloomFilter.thresholdLevel);
|
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);
|
m_seperableBlurProgram = _createShaderProgram(vertexShader, seperableBlurShader);
|
||||||
glUseProgram(m_seperableBlurProgram);
|
glUseProgram(m_seperableBlurProgram);
|
||||||
loc = glGetUniformLocation(m_seperableBlurProgram, "Sample0");
|
loc = glGetUniformLocation(m_seperableBlurProgram, "Sample0");
|
||||||
|
@ -295,6 +315,9 @@ void PostProcessor::init()
|
||||||
|
|
||||||
void PostProcessor::destroy()
|
void PostProcessor::destroy()
|
||||||
{
|
{
|
||||||
|
if (m_copyProgram != 0)
|
||||||
|
glDeleteProgram(m_copyProgram);
|
||||||
|
m_copyProgram = 0;
|
||||||
if (m_extractBloomProgram != 0)
|
if (m_extractBloomProgram != 0)
|
||||||
glDeleteProgram(m_extractBloomProgram);
|
glDeleteProgram(m_extractBloomProgram);
|
||||||
m_extractBloomProgram = 0;
|
m_extractBloomProgram = 0;
|
||||||
|
@ -372,6 +395,12 @@ void PostProcessor::process(FrameBuffer * _pBuffer)
|
||||||
_setGLState();
|
_setGLState();
|
||||||
OGLVideo & ogl = video();
|
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_READ_FRAMEBUFFER, _pBuffer->m_FBO);
|
||||||
glBindFramebuffer(GL_DRAW_FRAMEBUFFER, m_FBO_original);
|
glBindFramebuffer(GL_DRAW_FRAMEBUFFER, m_FBO_original);
|
||||||
glBlitFramebuffer(
|
glBlitFramebuffer(
|
||||||
|
@ -379,6 +408,7 @@ void PostProcessor::process(FrameBuffer * _pBuffer)
|
||||||
0, 0, ogl.getWidth(), ogl.getHeight(),
|
0, 0, ogl.getWidth(), ogl.getHeight(),
|
||||||
GL_COLOR_BUFFER_BIT, GL_LINEAR
|
GL_COLOR_BUFFER_BIT, GL_LINEAR
|
||||||
);
|
);
|
||||||
|
#endif
|
||||||
|
|
||||||
glBindFramebuffer(GL_READ_FRAMEBUFFER, 0);
|
glBindFramebuffer(GL_READ_FRAMEBUFFER, 0);
|
||||||
|
|
||||||
|
|
|
@ -16,7 +16,7 @@ public:
|
||||||
|
|
||||||
private:
|
private:
|
||||||
PostProcessor() :
|
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_FBO_original(0), m_FBO_glowMap(0), m_FBO_blur(0),
|
||||||
m_pTextureOriginal(NULL), m_pTextureGlowMap(NULL), m_pTextureBlur(NULL) {}
|
m_pTextureOriginal(NULL), m_pTextureGlowMap(NULL), m_pTextureBlur(NULL) {}
|
||||||
PostProcessor(const PostProcessor & _other);
|
PostProcessor(const PostProcessor & _other);
|
||||||
|
@ -25,6 +25,7 @@ private:
|
||||||
GLuint m_seperableBlurProgram;
|
GLuint m_seperableBlurProgram;
|
||||||
GLuint m_glowProgram;
|
GLuint m_glowProgram;
|
||||||
GLuint m_bloomProgram;
|
GLuint m_bloomProgram;
|
||||||
|
GLuint m_copyProgram;
|
||||||
|
|
||||||
GLuint m_FBO_original;
|
GLuint m_FBO_original;
|
||||||
GLuint m_FBO_glowMap;
|
GLuint m_FBO_glowMap;
|
||||||
|
|
Loading…
Reference in New Issue
Block a user