0
我開始學習WebGL。然後,我做了一個演示。
但是,看起來'gl.DEPTH_TEST'沒有起作用。如何在WebGL中啓用隱藏曲面去除?
這是演示。
https://dl.dropboxusercontent.com/u/1236764/temp/stackoverflow_20130713/index.html
如何啓用隱藏曲面去除?
我想知道如果有人可以給我一些提示。
我開始學習WebGL。然後,我做了一個演示。
但是,看起來'gl.DEPTH_TEST'沒有起作用。如何在WebGL中啓用隱藏曲面去除?
這是演示。
https://dl.dropboxusercontent.com/u/1236764/temp/stackoverflow_20130713/index.html
如何啓用隱藏曲面去除?
我想知道如果有人可以給我一些提示。
var near = 0;
var far = 100;
mat4.perspective(projectionMatrix, fov, aspect, near, far);
您已指定近平面爲0.由於計算深度緩衝區值的方式會導致深度緩衝區完全無用。
您應該設置大於零的near
。您設置近平面的距離越遠,深度緩衝區功能就越好。
因此,最佳設置就在場景中最接近的東西前面 - 在您的情況下,這將是eye
矢量的長度減去茶壺邊界球的半徑。但對於簡單的程序,只需設置合理比例的數字(如0.1或1)就足夠了。
非常感謝。感謝您的建議,問題得到了解決! 我不知道,深度緩衝區附近的削波效應。 – yomotsu
凱文,爲什麼應該如此?我認爲近值和遠值都在Z軸上,所以負值應該沒問題(只要相機位置仍然較遠)。錯誤觀念? – virtualnobi
@virtualnobi這些近值和遠值在Z軸上,是的,但是我們定義了*投影*矩陣,所以它是相對於攝像機位置的Z軸,並且不存在視圖變換。根據定義,Near = 0位於相機處,並且靠近<0位於相機後面*。接近<0的區域,如果沒有剪去,任何繪製的東西都會被倒置,因爲它已經過去了相機位置的無限近點,因此無限大的點。 –