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; }
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); }