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

Method ReflectBufferVariables

GTE/Graphics/GL46/GLSLReflection.cpp:853–972  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

851}
852
853void GLSLReflection::ReflectBufferVariables()
854{
855 GLint numResources = 0;
856 glGetProgramInterfaceiv(mHandle, GL_BUFFER_VARIABLE, GL_ACTIVE_RESOURCES, &numResources);
857
858 if (numResources > 0)
859 {
860 mBufferVariables.resize(numResources);
861
862 enum
863 {
864 IDX_NAME_LENGTH,
865 IDX_TYPE,
866 IDX_ARRAY_SIZE,
867 IDX_OFFSET,
868 IDX_BLOCK_INDEX,
869 IDX_ARRAY_STRIDE,
870 IDX_MATRIX_STRIDE,
871 IDX_IS_ROW_MAJOR,
872 IDX_TOP_LEVEL_ARRAY_SIZE,
873 IDX_TOP_LEVEL_ARRAY_STRIDE,
874 IDX_REFERENCED_BY_VERTEX_SHADER,
875 IDX_REFERENCED_BY_GEOMETRY_SHADER,
876 IDX_REFERENCED_BY_FRAGMENT_SHADER,
877 IDX_REFERENCED_BY_COMPUTE_SHADER,
878 IDX_REFERENCED_BY_TESS_CONTROL_SHADER,
879 IDX_REFERENCED_BY_TESS_EVALUATION_SHADER
880 };
881
882 std::vector<GLenum> const properties =
883 {
884 GL_NAME_LENGTH,
885 GL_TYPE,
886 GL_ARRAY_SIZE,
887 GL_OFFSET,
888 GL_BLOCK_INDEX,
889 GL_ARRAY_STRIDE,
890 GL_MATRIX_STRIDE,
891 GL_IS_ROW_MAJOR,
892 GL_TOP_LEVEL_ARRAY_SIZE,
893 GL_TOP_LEVEL_ARRAY_STRIDE,
894 GL_REFERENCED_BY_VERTEX_SHADER,
895 GL_REFERENCED_BY_GEOMETRY_SHADER,
896 GL_REFERENCED_BY_FRAGMENT_SHADER,
897 GL_REFERENCED_BY_COMPUTE_SHADER,
898 GL_REFERENCED_BY_TESS_CONTROL_SHADER,
899 GL_REFERENCED_BY_TESS_EVALUATION_SHADER
900 };
901
902 GLsizei const numProperties = static_cast<GLsizei>(properties.size());
903
904 std::vector<GLint> results(properties.size(), 0);
905 for (int32_t i = 0; i < numResources; ++i)
906 {
907 glGetProgramResourceiv(mHandle, GL_BUFFER_VARIABLE, i, numProperties,
908 properties.data(), numProperties, nullptr, results.data());
909
910 GLsizei const numBytes = static_cast<GLsizei>(results[IDX_NAME_LENGTH] + 1);

Callers

nothing calls this directly

Calls 3

glGetProgramInterfaceivFunction · 0.85
glGetProgramResourceivFunction · 0.85
glGetProgramResourceNameFunction · 0.85

Tested by

no test coverage detected