[英]Render in Opengl. Overlapping Objects
我在OpenGL中渲染重疊對象時遇到問題。
我正在調用繪制對象的函數,以便如果我先調用drawB()然后再調用drawA(),則A在B之上,而B可能被A隱藏。
一切正常,直到發生A是一條線(GL_LINES)和B是一條多邊形(GL_POLYGON)為止。 如果發生這種情況,應將B放置在A的底部,該B應該放在底部。
目前,我已禁用GL_DEPTH_TEST。 我嘗試啟用它,嘗試了glDepthMask和glPolygonOffset,但沒有一個起作用。 我認為我一直在錯誤地使用它們。 有什么想法可以按照正確的順序繪制該對象嗎?
**編輯:顯然問題是我沒有清除GL_COLOR_BUFFER_BIT,但是由於速度問題我沒有清除。 我必須找到一種方法,而不會擦除gl_color_buffer_bit,按順序繪制對象**
它具有由glOrtho(r.left(),r.right(),r.bottom(),r.top(),0,2);定義的地形投影。
調用該函數時,先繪制背景對象,然后繪制前景。 我希望將背景對象繪制在前景以下。
我的想法是我有兩種布局,一種用於前景,一種用於背景。 首先,背景中的每個對象都會繪制自己。 然后,前景中的每個對象都將執行相同的操作。 每個對象都有一個顯示列表,該列表根據其自身的坐標系對其進行變換。 該顯示列表的想法是允許對象嵌套,每個對象都具有自己的坐標系,盡管它們具有父坐標系。
片刻之后,我在背景中有一組物體
glBegin (GL_POLYGON) ;
for (angle = 0; angle<PI * 2;angle+=1){
glVertex2f (X + sin(angle) * Radius, Y + cos(angle) * Radius);
}
glEnd () ;
另一個對象,在前景布局中
glBegin(GL_LINES);
glVertex2f(m_x[m_currentPositionP1],m_y[m_currentPositionP1]);
glVertex2f(m_x[m_currentPositionP],m_y[m_currentPositionP]);
glEnd();
但是線條看起來被多邊形隱藏了
只要從后往前繪制, glVertex2f
產生良好的效果。
由於需要不同的順序,因此需要指定Z坐標以確定哪個在最上面。 glVertex3f
ftw。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.