簡體   English   中英

3D應用程序中的OpenGL 2D hud

[英]OpenGL 2D hud in 3D application

我一直試圖在我的OpenGL應用程序中創建一個hud。 環顧四周,似乎這樣做的方法是使用正射投影,但到目前為止,我還沒有能夠正確渲染程序。 發生了什么,而不是在我的顯示器上呈現,我得到奇怪的圖形故障,如下所示:

在此輸入圖像描述

如果我注釋掉hud代碼,一切都會完美呈現。

glEnable(GL_DEPTH_TEST);
glDepthFunc(GL_LESS);

//Set up projection matrix
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
//Using gluPerspective. It's pretty easy and looks nice.
gluPerspective(fov, aspect, zNear, zFar);

//Set up modelview matrix
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

//3D rendering

glDepthMask(GL_FALSE);
glDisable(GL_DEPTH_TEST);

glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluOrtho2D(0,window_width,0,window_height); //left,right,bottom,top

glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

glColor3f(0.0,0.0,1.0);
glBegin(GL_QUADS);
    glVertex2f(50,50);
    glVertex2f(50,100);
    glVertex2f(100,100);
    glVertex2f(100,50);
glEnd();

完成渲染HUD后,需要重新啟用深度寫入

glDepthMask(GL_TRUE);

在渲染HUD時清除緩沖區時,到目前為止繪制的所有內容(您的3D場景)也將被清除。 所以不要兩次清除緩沖區。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM