2015-05-02 135 views
0

嗨,我正在做一个任务,无法弄清楚如何渲染背景。 我绘制了三角形,每一件事物都呈现在屏幕上,但它总是成为前景,并阻止了一切从视图。OpenGL如何渲染背景

这是我渲染背景的代码。

void render(){ 
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); 

    glUseProgram(bgShaderID); 
    glBindVertexArray(bgArrayID); 
    glDrawArrays(GL_TRIANGLES, 0, 6); 
    glBindVertexArray(0); 

    // draw everything else 

    glutSwapBuffers(); 
    glFlush(); 

} 

在我的顶点着色器,我有以下:

in vec3 a_vertex; 
in vec3 a_colour; 

out vec3 fragmentColor; 

void main(){  

    gl_Position = vec4(a_vertex.xy, 0.0 ,1); 
    fragmentColor = a_colour; 
} 

回答

1

好像你启用了GL_DEPTH_TEST。我不知道是什么的投影矩阵,并使用绘制的前景物体z值,但

gl_Position = vec4(a_vertex.xy, 0.0 ,1); 

为背景的短片空间Z设置为0,假设perspecitve投影,这是redicolously靠近前平面。假设有一些摄像投影,这仍然在深度范围的中间。

你当然可以尝试设置z = 1.0将其设置为着色器中的远平面。但是,由于您先绘制背景,在绘制backgorund期间暂时禁用GL_DEPTH_TEST(或通过glDepthMask(GL_FALSE)禁用深度写入)可能会更好。

+0

哇谢谢堆,那工作 – user2661167