Opengl es 使用多着色器程序时,OpenGL将在渲染管道中进行多少次光栅化?

Opengl es 使用多着色器程序时,OpenGL将在渲染管道中进行多少次光栅化?,opengl-es,opengl-es-3.0,Opengl Es,Opengl Es 3.0,据我所知,如果OpenGL ES 3.X希望仅使用一对可编程顶点和片段着色器绘制几何对象,渲染管道可能如下所示,这里我忽略其他一些步骤: 顶点->光栅化->碎片->模板测试->深度测试 现在,如果我尝试使用两对不同的可编程顶点和片段着色器来绘制一些东西,渲染管道会是什么样子?OpenGL将在渲染管道中进行多少光栅化/模板测试/深度测试 public void onDrawFrame(GL10 gl) { GLES30.glClearColor(0.0F, 0.0F, 0.

据我所知,如果OpenGL ES 3.X希望仅使用一对可编程顶点和片段着色器绘制几何对象,渲染管道可能如下所示,这里我忽略其他一些步骤:

顶点->光栅化->碎片->模板测试->深度测试

现在,如果我尝试使用两对不同的可编程顶点和片段着色器来绘制一些东西,渲染管道会是什么样子?OpenGL将在渲染管道中进行多少光栅化/模板测试/深度测试

    public void onDrawFrame(GL10 gl) {
        GLES30.glClearColor(0.0F, 0.0F, 0.0F, 1.0F);
        GLES30.glClear(GL10.GL_COLOR_BUFFER_BIT
                | GL10.GL_DEPTH_BUFFER_BIT);


        // use program 1
        GLES30.glUseProgram(mProgram1);
        int aPositionLocation1 = GLES30.glGetAttribLocation(mProgram2, "vPosition");
        GLES30.glEnableVertexAttribArray(aPositionLocation1);
        // more codes to transfer vertex array to shader
        GLES30.glDrawArrays(GLES30.GL_TRIANGLES, 0, 36);

        // ..

        // use program 2
        GLES30.glUseProgram(mProgram2);
        int aPositionLocation2 = GLES30.glGetAttribLocation(mProgram2, "vPosition");
        GLES30.glEnableVertexAttribArray(aPositionLocation2);
        // more codes to transfer vertex array to shader
        GLES30.glDrawArrays(GLES30.GL_TRIANGLES, 0, 36);

        // ...
    }
“光栅化”是按原语进行的。