OSDN Git Service

Only glUniform1i() can be used to set sampler uniforms. Generate error otherwise.
authorBrian <brian@yutani.localnet.net>
Sat, 3 Feb 2007 01:05:43 +0000 (18:05 -0700)
committerBrian <brian@yutani.localnet.net>
Sat, 3 Feb 2007 01:05:43 +0000 (18:05 -0700)
src/mesa/shader/shader_api.c

index e2fedf7..1914adb 100644 (file)
@@ -891,8 +891,22 @@ _mesa_uniform(GLcontext *ctx, GLint location, GLsizei count,
 
    FLUSH_VERTICES(ctx, _NEW_PROGRAM);
 
+   /*
+    * If we're setting a sampler, we must use glUniformi1()!
+    */
+   if (shProg->Uniforms->Parameters[location].Type == PROGRAM_SAMPLER) {
+      if (type != GL_INT || count != 1) {
+         _mesa_error(ctx, GL_INVALID_OPERATION,
+                     "glUniform(only glUniform1i can be used "
+                     "to set sampler uniforms)");
+         return;
+      }
+   }
+
    uniformVal = shProg->Uniforms->ParameterValues[location];
 
+   /* XXX obey 'count' parameter! */
+
    if (type == GL_INT ||
        type == GL_INT_VEC2 ||
        type == GL_INT_VEC3 ||