summaryrefslogtreecommitdiff
path: root/Source/Plugins/Plugin_VideoOGL/Src/ProgramShaderCache.cpp
diff options
context:
space:
mode:
authorRyan Houdek <Sonicadvance1@gmail.com>2011-12-17 01:06:55 -0600
committerRyan Houdek <Sonicadvance1@gmail.com>2011-12-17 01:06:55 -0600
commitb837ae25fc9db2ae2fa9708038b1db8733a13020 (patch)
treefafb26096616ed13df6c2ef5db2b5e42af585df4 /Source/Plugins/Plugin_VideoOGL/Src/ProgramShaderCache.cpp
parent73c3f198f4188629eb3bcac123f8516135a86a4c (diff)
Set Sampler values at program make time instead of every frame. Fix an issue when The user had UBO support but not Binding support.
Diffstat (limited to 'Source/Plugins/Plugin_VideoOGL/Src/ProgramShaderCache.cpp')
-rw-r--r--Source/Plugins/Plugin_VideoOGL/Src/ProgramShaderCache.cpp10
1 files changed, 9 insertions, 1 deletions
diff --git a/Source/Plugins/Plugin_VideoOGL/Src/ProgramShaderCache.cpp b/Source/Plugins/Plugin_VideoOGL/Src/ProgramShaderCache.cpp
index c90f151421..14542bf68f 100644
--- a/Source/Plugins/Plugin_VideoOGL/Src/ProgramShaderCache.cpp
+++ b/Source/Plugins/Plugin_VideoOGL/Src/ProgramShaderCache.cpp
@@ -114,9 +114,17 @@ namespace OGL
//For some reason this fails on my hardware
//glGetUniformIndices(entry.program.glprogid, NUM_UNIFORMS, UniformNames, entry.program.UniformLocations);
//Got to do it this crappy way.
- if(!g_ActiveConfig.backend_info.bSupportsGLSLUBO)
+ if (!g_ActiveConfig.backend_info.bSupportsGLSLUBO)
for(int a = 0; a < NUM_UNIFORMS; ++a)
entry.program.UniformLocations[a] = glGetUniformLocation(entry.program.glprogid, UniformNames[a]);
+ else if (!g_ActiveConfig.backend_info.bSupportsGLSLBinding)
+ for(int a = 0; a < 8; ++a)
+ {
+ // Still need to get sampler locations since we aren't binding them statically in the shaders
+ entry.program.UniformLocations[a] = glGetUniformLocation(entry.program.glprogid, UniformNames[a]);
+ if(entry.program.UniformLocations[a] != -1)
+ glUniform1i(entry.program.UniformLocations[a], a);
+ }
// Need to get some attribute locations
if(uid.uid.vsid != 0) // We have no vertex Shader