如何从程序中获取顶点着色器

How to get the Vertex shader from program

我可以使用 Webgl api 从程序 (WebGlProgram) 中获取顶点着色器(仅)吗? 有一个 gl.getAttachedShaders() 给了我一个数组。有没有办法确定哪个是哪个?

谢谢

WebGL Specification; 5.13.9 Programs and Shaders

any getShaderParameter(WebGLShader shader, GLenum pname)

Return the value for the passed pname given the passed shader. The type returned is the natural type for the requested pname, as given in the following table:

SHADER_TYPE     unsigned long
DELETE_STATUS   boolean
COMPILE_STATUS  boolean

使用 gl.getShaderParameter(shader, gl.SHADER_TYPE) 来确定由 gl.getAttachedShaders return 编辑的着色器对象 shader 是顶点着色器还是片段着色器。可能的 return 值为 gl.VERTEX_SHADERgl.FRAGMENT_SHADER.