MCPcopy Create free account
hub / github.com/davideberly/GeometricTools / ReflectUniforms

Method ReflectUniforms

GTE/Graphics/GL46/GLSLReflection.cpp:496–617  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

494}
495
496void GLSLReflection::ReflectUniforms()
497{
498 GLint numResources = 0;
499 glGetProgramInterfaceiv(mHandle, GL_UNIFORM, GL_ACTIVE_RESOURCES,
500 &numResources);
501
502 if (numResources > 0)
503 {
504 mUniforms.clear();
505
506 enum
507 {
508 IDX_NAME_LENGTH,
509 IDX_TYPE,
510 IDX_LOCATION,
511 IDX_ARRAY_SIZE,
512 IDX_OFFSET,
513 IDX_BLOCK_INDEX,
514 IDX_ARRAY_STRIDE,
515 IDX_MATRIX_STRIDE,
516 IDX_IS_ROW_MAJOR,
517 IDX_ATOMIC_COUNTER_BUFFER_INDEX,
518 IDX_REFERENCED_BY_VERTEX_SHADER,
519 IDX_REFERENCED_BY_GEOMETRY_SHADER,
520 IDX_REFERENCED_BY_FRAGMENT_SHADER,
521 IDX_REFERENCED_BY_COMPUTE_SHADER,
522 IDX_REFERENCED_BY_TESS_CONTROL_SHADER,
523 IDX_REFERENCED_BY_TESS_EVALUATION_SHADER
524 };
525
526 std::vector<GLenum> const properties =
527 {
528 GL_NAME_LENGTH,
529 GL_TYPE,
530 GL_LOCATION,
531 GL_ARRAY_SIZE,
532 GL_OFFSET,
533 GL_BLOCK_INDEX,
534 GL_ARRAY_STRIDE,
535 GL_MATRIX_STRIDE,
536 GL_IS_ROW_MAJOR,
537 GL_ATOMIC_COUNTER_BUFFER_INDEX,
538 GL_REFERENCED_BY_VERTEX_SHADER,
539 GL_REFERENCED_BY_GEOMETRY_SHADER,
540 GL_REFERENCED_BY_FRAGMENT_SHADER,
541 GL_REFERENCED_BY_COMPUTE_SHADER,
542 GL_REFERENCED_BY_TESS_CONTROL_SHADER,
543 GL_REFERENCED_BY_TESS_EVALUATION_SHADER
544 };
545
546 GLsizei const numProperties = static_cast<GLsizei>(properties.size());
547
548 std::vector<GLint> results(properties.size(), 0);
549 for (int32_t i = 0; i < numResources; ++i)
550 {
551 glGetProgramResourceiv(mHandle, GL_UNIFORM, i, numProperties,
552 properties.data(), numProperties, nullptr, results.data());
553

Callers

nothing calls this directly

Calls 4

glGetProgramInterfaceivFunction · 0.85
glGetProgramResourceivFunction · 0.85
glGetProgramResourceNameFunction · 0.85
glGetUniformLocationFunction · 0.85

Tested by

no test coverage detected