static GLboolean
check_uniform(const GLint expected[4], GLuint size, int sign,
              GLint loc, const char *func)
{
   if (sign == SIGNED) {
      GLint vals[4];
      glGetUniformivARB(Program, loc, vals);
      if (size < 4)
         vals[3] = 1;
      if (size < 3)
         vals[2] = 0;
      if (size < 2)
         vals[1] = 0;
      if (expected[0] != vals[0] ||
          expected[1] != vals[1] ||
          expected[2] != vals[2] ||
          expected[3] != vals[3]) {
         fprintf(stderr, "%s: %s failed\n", TestName, func);
         fprintf(stderr, "  Expected: %d, %d, %d, %d\n",
                 expected[0], expected[1], expected[2], expected[3]);
         fprintf(stderr, "  Found:    %d, %d, %d, %d\n",
                 vals[0], vals[1], vals[2], vals[3]);
         return GL_FALSE;
      }
   }
   else {
      GLuint vals[4];
      glGetUniformuivEXT(Program, loc, vals);
      if (size < 4)
         vals[3] = 1;
      if (size < 3)
         vals[2] = 0;
      if (size < 2)
         vals[1] = 0;
      if (expected[0] != vals[0] ||
          expected[1] != vals[1] ||
          expected[2] != vals[2] ||
          expected[3] != vals[3]) {
         fprintf(stderr, "%s: %s failed\n", TestName, func);
         fprintf(stderr, "  Expected: %d, %d, %d, %d\n",
                 expected[0], expected[1], expected[2], expected[3]);
         fprintf(stderr, "  Found:    %u, %u, %u, %u\n",
                 vals[0], vals[1], vals[2], vals[3]);
         return GL_FALSE;
      }
   }
   return GL_TRUE;
}
Beispiel #2
0
void VolumeRayCasting::SetTexture(GLuint shaderId, const GLchar *name, GLuint texture, GLenum type) const
{
  GLint location = glGetUniformLocationARB(shaderId, name);
  if(location < 0)
    return;
  
  GLuint index = -1;
  //glGetUniformuiv(shaderId, location, &index);
  glGetUniformuivEXT(shaderId, location, &index);
  if(index == -1)
    {
      index = 0;
      glUseProgramObjectARB(shaderId);
      glUniform1iARB(location, index);
    }
  glActiveTexture(GL_TEXTURE0 + index);
  glBindTexture(type, texture);
}
JNIEXPORT void JNICALL Java_org_lwjgl_opengl_EXTGPUShader4_nglGetUniformuivEXT__IIJ(JNIEnv *__env, jclass clazz, jint program, jint location, jlong paramsAddress) {
    glGetUniformuivEXTPROC glGetUniformuivEXT = (glGetUniformuivEXTPROC)tlsGetFunction(1743);
    intptr_t params = (intptr_t)paramsAddress;
    UNUSED_PARAM(clazz)
    glGetUniformuivEXT(program, location, params);
}
JNIEXPORT void JNICALL Java_org_lwjgl_opengl_EXTGpuShader4_nglGetUniformuivEXT(JNIEnv *env, jclass clazz, jint program, jint location, jobject params, jint params_position, jlong function_pointer) {
	GLuint *params_address = ((GLuint *)(*env)->GetDirectBufferAddress(env, params)) + params_position;
	glGetUniformuivEXTPROC glGetUniformuivEXT = (glGetUniformuivEXTPROC)((intptr_t)function_pointer);
	glGetUniformuivEXT(program, location, params_address);
}