m_materialsLocation = glGetUniformBlockIndex(m_program.id(), "MaterialsBlock"); GLint blockSize; std::vector names({ "u_materials", "u_materials.materials", "u_materials.materials[0]", "u_materials.materials.ambientTexture", "u_materials.materials[0].ambientTexture", "MaterialsBlock.materials", "MaterialsBlock.materials[0]", "MaterialsBlock.materials.ambientTexture", "MaterialsBlock.materials[0].ambientTexture", "materials", "materials[0]", "materials.ambientTexture", "materials[0].ambientTexture", }); std::vector indices(names.size()); std::vector offsets(names.size()); glGetActiveUniformBlockiv(m_program.id(), m_materialsLocation, GL_UNIFORM_BLOCK_DATA_SIZE, &blockSize); glGetUniformIndices(m_program.id(), names.size(), names.data(), indices.data()); glGetActiveUniformsiv(m_program.id(), indices.size(), indices.data(), GL_UNIFORM_OFFSET, offsets.data()); for (int i = 0; i < names.size(); ++i) { std::cout << names[i] << ": " << indices[i] << " offset " << offsets[i] << std::endl; } std::cout << "Materials block size " << blockSize << std::endl;