簡體   English   中英

在Opengl中渲染。 重疊對象

[英]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.

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