glCleatDepth
opengl裏面的深度緩存
在現實生活中,一個實心物體擋在另外一個實心物體的前面, 後面的那個物體有部分會被遮蓋掉
那麼opengl裏面如何模擬這個情況呢? 每個物體的每個像素都有一個深度緩存的值(在0到1之間,可以想象成是z軸的距離)
如果glDepthFunc啓用了GL_LESS(現實生活中的前景), 那麼當前個物體擋住後個物體時, 由於前個物體深度值小(越靠近人的), 所以它就被畫了出來, 後面的物體被擋住的像素就被忽略掉了。(當然你如果啓用了GL_GREATER, 那麼情況就反過來了)
這個時候再來說glClearDepth, 它給深度緩衝指定了一個初始值,緩衝中的每個像素的深度值都是這個, 比如1,這個時候你往裏面畫一個物體, 由於物體的每個像素的深度值都小於等於1, 所以整個物體都被顯示了出來。 如果初始值指定爲0, 物體的每個像素的深度值都大於等於0, 所以整個物體都不可見。 如果初始值指定爲0.5, 那麼物體就只有深度小於0.5的那部分纔是可見的
在現實生活中,一個實心物體擋在另外一個實心物體的前面, 後面的那個物體有部分會被遮蓋掉
那麼opengl裏面如何模擬這個情況呢? 每個物體的每個像素都有一個深度緩存的值(在0到1之間,可以想象成是z軸的距離)
如果glDepthFunc啓用了GL_LESS(現實生活中的前景), 那麼當前個物體擋住後個物體時, 由於前個物體深度值小(越靠近人的), 所以它就被畫了出來, 後面的物體被擋住的像素就被忽略掉了。(當然你如果啓用了GL_GREATER, 那麼情況就反過來了)
這個時候再來說glClearDepth, 它給深度緩衝指定了一個初始值,緩衝中的每個像素的深度值都是這個, 比如1,這個時候你往裏面畫一個物體, 由於物體的每個像素的深度值都小於等於1, 所以整個物體都被顯示了出來。 如果初始值指定爲0, 物體的每個像素的深度值都大於等於0, 所以整個物體都不可見。 如果初始值指定爲0.5, 那麼物體就只有深度小於0.5的那部分纔是可見的
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章
OpenGL固定管線設置投影矩陣
龚建波
2020-07-06 14:13:21
OpenGL glReadPixels錯誤
原創
2023-09-29 02:07:17
XCode中配置OpenGL環境
原創
2023-09-28 13:45:29
Android環境下OpenGL ES的學習
w366549434
2020-07-08 00:22:28
VS2010 Meshlab編譯
VS2010 Meshlab編譯 因項目組需要,最近需要編譯一下Meshlab,爲了日後做功能抽取和擴展做準備,在meshlab的基礎上,環
懂deeee珍惜
2020-07-07 23:19:57
OpenGL 4.3 (Core Profile) -5.3 Propagating Changes to Objects
lhy_ps6
2020-07-07 22:25:37
OpenGL入門 -- 環境搭建
亮亮不想说话
2020-07-07 15:39:00
OpenGL學習五——繪製幾何體
Ocean2006
2020-07-07 12:53:01
Learn OpenGLES: 正交變換
漫少
2020-07-07 10:29:56
[OpenGL][原創]無法解析的外部符號 _gladLoadGLLoader,_glad_glViewport 該符號在函數 _main 中被引用解決方法
FL1623863129
2020-07-07 04:49:30
glColor3f函數顏色
sherry_0009
2020-07-07 02:33:02
opengl的PIXELFORMATDESCRIPTOR
sherry_0009
2020-07-07 02:33:02
glBegin
sherry_0009
2020-07-07 02:33:02