OpenGL Shader附加到程序

Lit*_*ian 6 opengl glsl

有没有办法访问附加到程序的着色器?也就是说,给定一个程序,我可以这样做:

vertexShader = getVertexShaderFromProgram(program);
Run Code Online (Sandbox Code Playgroud)

(我想在我的函数中记录着色器编译状态,验证我的程序,但我只保留对程序的引用,而不是着色器.)

gen*_*ult 8

  1. glGetAttachedShaders() 获取附加到给定程序对象的着色器的名称.

  2. glGetShaderiv( ..., GL_SHADER_TYPE, ... ) 获取着色器的类型(顶点,几何,片段).

  3. glGetShaderiv( ..., GL_SHADER_SOURCE_LENGTH, ... ) 在每个着色器名称上,以确定源的长度.

  4. glGetShaderSource() 获取每个连接的着色器的源字符串.

编辑:如果您需要的是着色器名称和类型,您可以在第2步之后停止.