我在代碼中成功使用FBO作爲渲染目標。這是我不清楚但是什麼樣的結果我能想到當我這樣做:在glFramebufferTexture2D()之後glReadPixels()的結果
glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0,
GL_TEXTURE_2D, someRgbaTexture, 0);
glReadPixels(0, 0, width, height, GL_RGBA, GL_UNSIGNED_BYTE, *someRgbaBuffer);
中的OpenGL ES 2.0(假設FBO是GL_FRAMEBUFFER_COMPLETE)。
我的目標是獲取由someRgbaTexture
引用的紋理內容。桌面OpenGL具有glGetTexImage()函數用於此目的,但它不存在於ES中。
將someRgbaTexture
設置爲讀取紋理,然後將屏幕填充紋理四元組轉換爲另一個FBO目標,然後回讀將確實做到這一點,但我想避免這種額外的傳遞。
因此:在調用glFramebufferTexture2D()
之後,framebuffer的內容是否等於紋理的內容,或者這個調用是否意味着任何未來的渲染操作都將針對指定的紋理?
如果是後者:如果我的渲染操作只是寫一個像素或什麼都不寫就會發生什麼?那麼someRgbaTexture
中的內容會有什麼保證呢?
FBO不應該像這樣使用。看到這個[page](http://www.songho.ca/opengl/index.html) –
@Fabien R,請給你的評論添加一個更詳細的解釋,並且描述一個人應該在[songho]( http://www.songho.ca)將回答上述問題。 – rsp1984
在描述FBO的頁面上,您會找到示例代碼。它會給你提示FBO如何工作。 –