有没有办法访问附加到程序的着色器?也就是说,给定一个程序,我可以做类似的事情:
vertexShader = getVertexShaderFromProgram(program);
(我想在验证我的程序的函数中记录着色器编译状态,但我只保留对程序的引用,而不是着色器。)
glGetAttachedShaders() http://www.opengl.org/sdk/docs/man/html/glGetAttachedShaders.xhtml获取附加到给定程序对象的着色器的名称。
glGetShaderiv( ..., GL_SHADER_TYPE, ... ) http://www.opengl.org/sdk/docs/man/html/glGetShader.xhtml获取着色器的类型(顶点、几何体、片段)。
glGetShaderiv( ..., GL_SHADER_SOURCE_LENGTH, ... ) http://www.opengl.org/sdk/docs/man/html/glGetShader.xhtml在每个着色器名称上以确定源的长度。
glGetShaderSource() http://www.opengl.org/sdk/docs/man/html/glGetShaderSource.xhtml获取每个附加着色器的源字符串。
EDIT:如果您需要的只是着色器名称和类型,您可以在步骤 2 后停止。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)