2015-05-02 182 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