6

有没有办法访问附加到程序的着色器?也就是说,给定一个程序,我可以执行以下操作:

vertexShader = getVertexShaderFromProgram(program);

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

4

1 回答 1

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

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

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

  4. glGetShaderSource()获取每个附加着色器的源字符串。

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

于 2013-03-21T01:59:37.423 回答