2013-09-26 22 views
0

我有一個奇怪的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"時,那麼陰影不再起作用。

回答

2

我有一個奇怪的bug在opengl我無法解釋。我使用陰影貼圖教程的複製過去「編程」。

總之:你是cargo culting閱讀一些很好OpenGL tutorial(s),瞭解他們教什麼,然後你會取得一些進展。

我不明白glBindTexture是用於讀取還是用於書寫......這個depthTex的確被定義爲存儲陰影貼圖的紋理。

這對兩者都適用。它選擇綁定到活動紋理單元的紋理。當啓用紋理化或着色器將紋理單元中的樣本綁定時,會讀取綁定紋理。調用其中一個glTex ...圖像函數將寫入它。