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
committerSonicadvance1 <sonicadvance1@RH-Live.(none)>2012-10-09 23:42:40 -0500
commitf8d0c28e537faa069a6f0f27f8bc205cae6b78d6 (patch)
tree1b0de63a0a7c64d872e065180aa32858261c8200 /Source/Plugins/Plugin_VideoOGL/Src/ProgramShaderCache.cpp
parentddd4360d6df89bc82c20c1d5ef47ee1fc94180e7 (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