2009-12-31 196 views
1

我正在編寫一些代碼,旨在: 1.使用FBO渲染到OpenGL紋理。 2.從FBO紋理繪製到連接到X Pixmap的GLXPixmap。 3.將X Pixmap繪製到屏幕上的窗口中。將OpenGL FBO紋理渲染到GLXPixmap

第3步很好,如果我用普通的OpenGL繪圖替換FBO紋理,第2步工作正常。

但是,如果我做了以上的事情,至少用我有的代碼,它不起作用。如果我給GLXPixmap一個彩色背景,並做1-3,屏幕上的窗口變成白色,但是我沒有畫出任何其他東西。

所以我希望有人可以提供提示,或指向我一些簡單的示例代碼。我得到的代碼相當複雜,但如果需要的話,我可以嘗試編寫一個簡單的示例版本來發布此處以供審閱。

回答

1

如果你的最後兩步工作,但沒有使用你在第一步創建的FBO,你可能會錯誤地初始化FBO。有些事情要檢查:

  • 是FBO「framebuffer complete」?將所有紋理和/或渲染緩衝區附加到它後,使用glCheckFramebufferStatus(GL_FRAMEBUFFER_COMPLETE)進行檢查。
  • 在渲染FBO之後,您是否有任何方法檢查FBO(例如使用glGetTexImage)以確定問題出在寫入FBO還是從FBO讀取?
  • 您可能已經檢查過,但值得一問:glGetError()是否會返回任何錯誤?

如果一切正確簽出,然後發佈一些骨架的設置和渲染代碼......雖然少令人費解的當然更好,=)

+0

唉,我查了FBO地位,它是完整的。我使用一個宏來檢查glGetError,該宏報告是否有問題,並且沒有投訴。但我會檢查glGetTexImage(),並嘗試組合一個簡單的示例 - 這本身可能會導致我找到一個解決方案。 :-) – 2010-01-02 00:18:18

+0

另一個簡單的事情(不要試圖侮辱你 - 我犯了這個錯誤幾次!)是確保你一直在使用GL_TEXTURE_2D和GL_TEXTURE_RECTANGLE – 2010-01-03 05:42:31