我有一個奇怪的bug在opengl我無法解釋。 我已經「編程」使用教程陰影貼圖的複製粘貼。 我想顯示陰影貼圖,所以我寫了一個小程序來顯示它。它不起作用(我只得到一個白色方塊)。 最後,通過嘗試了很多,我在場景的主渲染中得到了幾乎正確的陰影。但是當我取消註釋例程以顯示陰影貼圖時,陰影不再呈現。 (它在主渲染之前)opengl奇怪的行爲shadowmap(Bindtexture)
我想它與glBindTexture(GL_TEXTURE_2D, depthTex)
(它存儲在shadowbuffer中)有關。如果沒有要求提及此depthTex
以顯示陰影貼圖,則以某種方式構建陰影,但當要求顯示此depthTex
時,則計算出的陰影爲非陰影。
我不知道是否曾經詢問glBindTexture(GL_TEXTURE_2D, depthTex)
顯示陰影貼圖,depthTex
不再能夠鏈接陰影着色器的計算。
我不明白glBindTexture
是用於閱讀還是寫作...... 這個depthTex
確實被定義爲存儲shadowmap的紋理。
總結:兩段代碼干涉,所以渲染紋理看起來比簡單地給定義opengl命令顯示紋理更加複雜。就好像glBindTexture(GL_TEXTURE_2D, depthTex)
只能被調用一次。
如果我要求顯示陰影貼圖程序以顯示程序的另一個紋理(例如「floor」),那麼主渲染場景上的陰影是可以的,但是當我要求顯示"depthTex"
時,那麼陰影不再起作用。