Opengl es 为什么不';对GLDrawArray的重复调用是否在iOS上的GLKView中绘制?

Opengl es 为什么不';对GLDrawArray的重复调用是否在iOS上的GLKView中绘制?,opengl-es,glsl,glkview,Opengl Es,Glsl,Glkview,我正在尝试在iOS上的GLKView中使用glDrawArrays重新绘制相同的数组。当我注释掉这两个调用中的任意两个时,另一个draw调用将按照我的预期进行绘制。我的最后一个预感是,我试图以相同的深度绘制,因此我引入了一个统一的深度,并在顶点着色器中设置深度,如下所示: gl_Position = vec4(position.xy, 0.1*depth, 1.0); gl_FragColor = vec4(rgb, texture2D(wheelMask, texCoord).a); 输入

我正在尝试在iOS上的GLKView中使用glDrawArrays重新绘制相同的数组。当我注释掉这两个调用中的任意两个时,另一个draw调用将按照我的预期进行绘制。我的最后一个预感是,我试图以相同的深度绘制,因此我引入了一个统一的深度,并在顶点着色器中设置深度,如下所示:

gl_Position = vec4(position.xy, 0.1*depth, 1.0);
gl_FragColor = vec4(rgb, texture2D(wheelMask, texCoord).a);
输入的深度是一个值为0、1或2的lowp向量。这没有任何效果

这是我的drawRect:method

- (void)drawRect:(CGRect)rect
{
    glClearColor(0., 0.0, 0.0, 0.0f);
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

    // Render the object again with ES2
    glUseProgram(_program);


    // the colors
    glBindVertexArrayOES(_vertexArray);

    glActiveTexture(GL_TEXTURE0);
    glBindTexture(GL_TEXTURE_2D, _wheelMaskTexture);
    glUniform1i(uniforms[UNIFORM_TEXTURE], 0);

    glUniform1f(uniforms[UNIFORM_COLOR_DEPTH], COLOR_DRAW);
    glUniform1f(uniforms[UNIFORM_COLOR_ANGLE], _angle);

    glDrawArrays(GL_TRIANGLES, 0, 6);


    // the sat
    glBindVertexArrayOES(_vertexArray);

    glActiveTexture(GL_TEXTURE0);
    glBindTexture(GL_TEXTURE_2D, _satMaskTexture);
    glUniform1i(uniforms[UNIFORM_TEXTURE], 0);

    glUniform1i(uniforms[UNIFORM_COLOR_DEPTH], SATURATION_DRAW);
    glUniform1f(uniforms[UNIFORM_COLOR_ANGLE], _satAngle);

    glDrawArrays(GL_TRIANGLES, 0, 6);


    // the bright
    glBindVertexArrayOES(_vertexArray);

    glActiveTexture(GL_TEXTURE0);
    glBindTexture(GL_TEXTURE_2D, _brightMaskTexture);
    glUniform1i(uniforms[UNIFORM_TEXTURE], 0);

    glUniform1i(uniforms[UNIFORM_COLOR_DEPTH], BRIGHTNESS_DRAW);
    glUniform1f(uniforms[UNIFORM_COLOR_ANGLE], _brightnessAngle);

    glDrawArrays(GL_TRIANGLES, 0, 6);
}
我的GLKView是用
drawableDepthFormat=GLKViewDrawableDepthFormat24
设置的。我没有设置任何变换,因为我画的基本上是一个简单的色轮

没有世界或模型变换。我只是简单地把同一个正方形一个接一个地画三次,而没有变换。有3种不同的遮罩图像用于遮罩我在片段着色器中关心的片段,如下所示:

gl_Position = vec4(position.xy, 0.1*depth, 1.0);
gl_FragColor = vec4(rgb, texture2D(wheelMask, texCoord).a);

为什么这三个
gldrawArray
调用不能按预期绘制?正如我前面提到的,他们中的任何一个人都会像预期的那样画画。事实上,对于所有三个,只有第一个
glDrawArrays
按预期绘制。

这很奇怪。你可以试着禁用深度测试吗?谢谢,@MaticOblak我试着禁用深度测试(将
glEnable(Glu depth\u test)
更改为
glDisable(Glu depth\u test)
,但没有成功。它仍然在绘制深度最低的项目(最小的v坐标)。