2011-05-06 145 views
0

有誰知道繪製紋理FBO時是否可以渲染紋理對象?例如,我想生成一個顯示紋理茶壺渲染的FBO /紋理。這可以用來顯示所述茶壺的鏡面反射。OpenGL:繪製FBO時的紋理處理

我已經試過好幾次了,它總是返回一個不可見的對象。 FBO /紋理顯示線條和其他不帶紋理的陰影物體,但不顯示帶紋理的物體。奇怪...

- 直接在主framebuffer上繪製相同的場景工作正常。紋理&非紋理對象渲染良好。

- 生成FBO /紋理時未使用渲染到的紋理ID。所以,沒有通告的約束力。

- glGetError在glDrawElements後不返回任何錯誤,所以這不是問題的根源。

- 紋理座標是正確的。我的圖形卡(英特爾x3100)確實支持Mac OS-X 10.6.7上的OpenGL 2.0,並且FBO示例程序正常工作(但它們不具有紋理功能)。

這可能是真實的東西簡單,但我無法找到它...


如果是不可能的,那麼有什麼推薦的方法做到這一點? 使用着色器? 這是否需要某種形式的多紋理?

+0

OK使用它的紋理單元之後,一切工作正常。我只是在繪製FBO之前忘記去除對glActiveTextureARB()的調用,實質上是將所有繪圖重定向到其他地方。它總是那些小東西...... – 2011-05-06 12:08:06

回答

1

FBO與其他渲染目標不同,所以紋理工作得很好。唯一的原因是,部分紋理單元仍然可能被FBO附件堵塞。一個FBO不能同時渲染目標和紋理源,所以如果OpenGL認爲這可能會導致事情發生。

確保將FBO用作紋理,您首先必須從其所用的所有紋理單元中解除綁定FBO及其附件,然後將FBO綁定爲渲染繪製緩衝區。

精拉伸到FBO先解除它作爲渲染緩衝區的目標,然後將其綁定到你想。