diff options
Diffstat (limited to 'src/libui_sdl/main.cpp')
-rw-r--r-- | src/libui_sdl/main.cpp | 14 |
1 files changed, 13 insertions, 1 deletions
diff --git a/src/libui_sdl/main.cpp b/src/libui_sdl/main.cpp index 9cdb610..f4a1fdb 100644 --- a/src/libui_sdl/main.cpp +++ b/src/libui_sdl/main.cpp @@ -166,13 +166,21 @@ bool GLDrawing_Init() if (!OpenGL_BuildShaderProgram(kScreenVS, kScreenFS, GL_ScreenShader, "ScreenShader")) return false; + GLuint uni_id; memset(&GL_ShaderConfig, 0, sizeof(GL_ShaderConfig)); glGenBuffers(1, &GL_ShaderConfigUBO); glBindBuffer(GL_UNIFORM_BUFFER, GL_ShaderConfigUBO); glBufferData(GL_UNIFORM_BUFFER, sizeof(GL_ShaderConfig), &GL_ShaderConfig, GL_STATIC_DRAW); glBindBufferBase(GL_UNIFORM_BUFFER, 16, GL_ShaderConfigUBO); - glUniformBlockBinding(GL_ScreenShader[2], 0, 16); + uni_id = glGetUniformBlockIndex(GL_ScreenShader[2], "uConfig"); + glUniformBlockBinding(GL_ScreenShader[2], uni_id, 16); + + glUseProgram(GL_ScreenShader[2]); + uni_id = glGetUniformLocation(GL_ScreenShader[2], "ScreenTex"); + glUniform1i(uni_id, 0); + uni_id = glGetUniformLocation(GL_ScreenShader[2], "_3DTex"); + glUniform1i(uni_id, 1); glGenBuffers(1, &GL_ScreenVertexBufferID); glBindBuffer(GL_ARRAY_BUFFER, GL_ScreenVertexBufferID); @@ -185,6 +193,10 @@ bool GLDrawing_Init() glEnableVertexAttribArray(1); // texcoord glVertexAttribPointer(1, 2, GL_FLOAT, GL_FALSE, 4*4, (void*)(2*4)); + glBindAttribLocation(GL_ScreenShader[2], 0, "vPosition"); + glBindAttribLocation(GL_ScreenShader[2], 1, "vTexcoord"); + glBindFragDataLocation(GL_ScreenShader[2], 0, "oColor"); + // TODO: consider reallocating the texture when changing screen sizes glGenTextures(1, &GL_ScreenTexture); glActiveTexture(GL_TEXTURE0); |