gpt4 book ai didi

opengl - 在 OpenGL 中,有没有办法获取着色器程序使用的所有制服和属性的列表?

转载 作者:行者123 更新时间:2023-12-02 09:38:40 25 4
gpt4 key购买 nike

我想获得着色器程序对象使用的所有制服和属性的列表。 glGetAttribLocation() & glGetUniformLocation()可用于将字符串映射到某个位置,但我真正想要的是字符串列表,而无需解析 glsl 代码。

注意:在 OpenGL 2.0 glGetObjectParameteriv()glGetProgramiv() 取代.枚举是 GL_ACTIVE_UNIFORMS & GL_ACTIVE_ATTRIBUTES .

最佳答案

两个示例之间共享的变量:

GLint i;
GLint count;

GLint size; // size of the variable
GLenum type; // type of the variable (float, vec3 or mat4, etc)

const GLsizei bufSize = 16; // maximum name length
GLchar name[bufSize]; // variable name in GLSL
GLsizei length; // name length

属性
glGetProgramiv(program, GL_ACTIVE_ATTRIBUTES, &count);
printf("Active Attributes: %d\n", count);

for (i = 0; i < count; i++)
{
glGetActiveAttrib(program, (GLuint)i, bufSize, &length, &size, &type, name);

printf("Attribute #%d Type: %u Name: %s\n", i, type, name);
}

制服
glGetProgramiv(program, GL_ACTIVE_UNIFORMS, &count);
printf("Active Uniforms: %d\n", count);

for (i = 0; i < count; i++)
{
glGetActiveUniform(program, (GLuint)i, bufSize, &length, &size, &type, name);

printf("Uniform #%d Type: %u Name: %s\n", i, type, name);
}

OpenGL 文档/变量类型

表示变量类型的各种宏可以在
文档。如 GL_FLOAT , GL_FLOAT_VEC3 , GL_FLOAT_MAT4 , 等等。
  • glGetActiveAttrib
  • glGetActiveUniform
  • 关于opengl - 在 OpenGL 中,有没有办法获取着色器程序使用的所有制服和属性的列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/440144/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com