Difference between revisions of "Example/Uniform Location Query New"

From OpenGL Wiki
Jump to: navigation, search
(Example code for uniform location use, new-style. With DSA.)
 
 
Line 7: Line 7:
 
uniform mat4 someMatrix;
 
uniform mat4 someMatrix;
 
...
 
...
//Code must use these uniforms to be active.
+
// Code must use these uniforms to be active.
 
</source>
 
</source>
  
 
C++ code:
 
C++ code:
 
<source lang=cpp>
 
<source lang=cpp>
GLuint program = //Compile and link program.
+
GLuint program = // Compile and link program.
 
GLint someVectorLoc = glGetProgramResourceLocation​(program, GL_UNIFORM, "someVector");
 
GLint someVectorLoc = glGetProgramResourceLocation​(program, GL_UNIFORM, "someVector");
assert(someVectorLoc != -1); //If fails, then the uniform is inactive.
+
assert(someVectorLoc != -1); // If fails, then the uniform is inactive.
 
GLint someMatrixLoc = glGetProgramResourceLocation​(program, GL_UNIFORM, "someMatrix");
 
GLint someMatrixLoc = glGetProgramResourceLocation​(program, GL_UNIFORM, "someMatrix");
assert(someMatrixLoc != -1); //If fails, then the uniform is inactive.
+
assert(someMatrixLoc != -1); // If fails, then the uniform is inactive.
 
...
 
...
 
glProgramUniform3f(program, someVectorLoc, 3.0f, 3.0f, 4.0f);
 
glProgramUniform3f(program, someVectorLoc, 3.0f, 3.0f, 4.0f);
 
GLfloat matrix[16];
 
GLfloat matrix[16];
//Fill `matrix` with data. Non-transposed matrix data.
+
// Fill `matrix` with data. Non-transposed matrix data.
 
glProgramUniformMatrix4fv(program, someMatrixLoc, 1, GL_FALSE, matrix);
 
glProgramUniformMatrix4fv(program, someMatrixLoc, 1, GL_FALSE, matrix);
 
</source>
 
</source>
 
<noinclude>[[Category:Example Code]]</noinclude>
 
<noinclude>[[Category:Example Code]]</noinclude>

Latest revision as of 11:15, 3 January 2018

Querying and using uniform locations, under the new introspection API.

Vertex shader code:

...
uniform vec3 someVector;
uniform mat4 someMatrix;
...
// Code must use these uniforms to be active.

C++ code:

GLuint program = // Compile and link program.
GLint someVectorLoc = glGetProgramResourceLocation​(program, GL_UNIFORM, "someVector");
assert(someVectorLoc != -1); // If fails, then the uniform is inactive.
GLint someMatrixLoc = glGetProgramResourceLocation​(program, GL_UNIFORM, "someMatrix");
assert(someMatrixLoc != -1); // If fails, then the uniform is inactive.
...
glProgramUniform3f(program, someVectorLoc, 3.0f, 3.0f, 4.0f);
GLfloat matrix[16];
// Fill `matrix` with data. Non-transposed matrix data.
glProgramUniformMatrix4fv(program, someMatrixLoc, 1, GL_FALSE, matrix);