OpenGL 3D 选择
OpenGL 3D 選擇
- OpenGL 3D 選擇簡介
- 源代碼剖析
- 主要源代碼
OpenGL 3D 選擇簡介
能夠?qū)⒋翱谥械氖髽?biāo)單擊映射到 3D 場景與一個基元(讓它成為三角形),該基元幸運(yùn)地投影到鼠標(biāo)單擊所在的同一點(diǎn),稱為3D 選擇。當(dāng)應(yīng)用程序需要將自定義鼠標(biāo)單擊(本質(zhì)上來自 2D)顯示到場景中對象的本地/世界空間中的任何內(nèi)容時,這非常有用。例如,您可以使用它為將來的操作(刪除等)選擇對象或其一部分。在本課的演示中,我們將渲染一組對象,并顯示如何將"選定"三角形標(biāo)記為紅色,以突出顯示它。
為了實(shí)現(xiàn) 3D 選擇,我們將利用陰影貼圖 (#23) 課程中介紹的 OpenGL 功能 – 幀緩沖對象 (FBO)。以前,我們只對深度緩沖區(qū)使用 FBO,因?yàn)槲覀冎粚Ρ容^不同位置的像素深度感興趣。對于 3D 選擇,我們將使用深度緩沖區(qū)和顏色緩沖區(qū)來存儲繪制的三角形的索引。
3D選擇的秘密很簡單。我們將索引綁定到每個三角形,并從 FS 獲取像素所在的三角形的索引。最終,我們將得到一個"顏色"緩沖區(qū),其中內(nèi)容不完全是顏色。對于要覆蓋的每個像素,我們將獲得該原始的索引。在窗口中單擊鼠標(biāo)時,我們將向后讀取該索引(根據(jù)鼠標(biāo)位置),并以紅色渲染所選三角形。通過在傳遞過程中使用深度緩沖區(qū)的組合,我們將確保當(dāng)多個基元覆蓋相同的像素時?
總結(jié)
以上是生活随笔為你收集整理的OpenGL 3D 选择的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: OpenGL天空游戏
- 下一篇: OpenGL PN三角形的分化