[問題] OpenGL優先顯示的問題

看板C_and_CPP (C/C++)作者 (怪龍-卡西歐魯)時間14年前 (2011/10/09 15:48), 編輯推噓5(503)
留言8則, 4人參與, 最新討論串1/1
開發平台(Platform): (Ex: VC++, GCC, Linux, ...) VC++ 額外使用到的函數庫(Library Used): (Ex: OpenGL, ...) OpenGL 問題(Question): 目前正在處理一個OpenGL的程式 這個程式已經有在螢幕上面畫了數個模型了 但是我現在有一系列的二維座標 希望能在視窗上面利用這些座標畫若干個多邊形 將原本顯示在視窗裡面的畫面蓋掉 請問有什麼方法可以做到呢? 我試著像這樣寫 glPushMatrix(); glLoadIdentity(); glBegin(GL_POLYGON); glColor3f(1.0f,1.0f,1.0f); for(int i=1;i<10;i++){ glVertex3f(x,y,0.0f); } glEnd(); glPopMatrix(); 但是這樣也只能在z=0的平面上顯示「一片」多邊形 而不是用多邊形在畫面上將後面的東西都蓋住 想請問一下OpenGL有什麼辦法可以顯示並且覆蓋後面的內容呢? 在此先感謝各位的回答 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 68.99.86.102

10/09 15:56, , 1F
depth test關掉
10/09 15:56, 1F

10/09 16:47, , 2F
或者把glDepthFunc設成 GL_ALWAYS 也可以XD
10/09 16:47, 2F

10/09 23:56, , 3F
glClear(GL_DEPTH_BUFFER_BIT); XD?
10/09 23:56, 3F

10/10 01:19, , 4F
感謝上面各位的回答,但是我試過這些方法了都還是沒有用(汗)
10/10 01:19, 4F
我在display function的最後面加了下面的程式 glPushMatrix(); glLoadIdentity(); glClear(GL_DEPTH_BUFFER_BIT); glBegin(GL_QUADS); glColor3f(1.0f,0.0f,0.0f); glVertex3f(-30,-30,0); glVertex3f(30,-30,0); glVertex3f(30,30,0); glVertex3f(-30,30,0); glEnd(); glPopMatrix(); 這是預期的結果:http://ppt.cc/Uv3R 這是實際執行的結果:http://ppt.cc/MBH, 想請問一下為什麼會畫不出東西來呢? 已經有用glLoadIdentity()將旋轉和平移矩陣初始化了 而也有用glClear(GL_DEPTH_BUFFER_BIT)保持這個東西畫在最前面,不會被擋住 但是螢幕上卻什麼都沒有顯示出來 ※ 編輯: hcl012 來自: 68.99.86.102 (10/10 01:30)

10/10 01:30, , 5F
沒有用是指?沒蓋掉畫面上的東西?還是根本沒畫出來?
10/10 01:30, 5F

10/10 03:00, , 6F
LoadIdeneity之後還要重新設定 model view matrix
10/10 03:00, 6F

10/10 03:00, , 7F
否則 [-30~30, -30~30] 這個方形不會投影到那個位置
10/10 03:00, 7F

10/10 03:02, , 8F
Z值也要注意,平面如果畫在camera的位置是無法出現的
10/10 03:02, 8F
文章代碼(AID): #1EaL6n3z (C_and_CPP)
文章代碼(AID): #1EaL6n3z (C_and_CPP)