我想在WebGL中將紋理framebuffer複製到另一個,到目前爲止它只是給出了黑屏。我能夠毫無問題地在紋理framebuffer中渲染。WebGL複製紋理framebuffer紋理framebuffer?
這是我認爲會的工作代碼(它目前適用於iOS):
// bind source fbo while we remember current fbo
glGetIntegerv(GL_FRAMEBUFFER_BINDING, ¤t_fbo);
glBindFramebuffer(GL_FRAMEBUFFER, src_framebuffer);
// setup source fbo attachments
glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, src_handle, 0);
//glReadBuffer(GL_COLOR_ATTACHMENT0); <- commented out because it is not available in WebGL
// bind destination fbo
glActiveTexture(GL_TEXTURE0 + i);
glBindTexture(dest_target, dest_handle);
// copy from source to dest
glCopyTexImage2D(dest_target, 0, dest_format, 0, 0, dest_width, dest_height, 0);
// set back original fbo
//glReadBuffer(GL_NONE);
glBindFramebuffer(GL_FRAMEBUFFER, current_fbo);
的WebGL不與WEBGL_draw_buffers擴展支持glReadBuffer所以我不能指定,但它支持多渲染目標,所以我們可以設置附件沒有問題(因此渲染紋理framebuffer工作完美無缺)。
我意識到,因爲我不能指定讀取緩衝區,也許這種技術無法正常工作?任何想法或解決方法?
我很困惑。上面的代碼是OpenGL而不是WebGL – gman 2014-10-10 20:50:18
@gman是的,這是因爲我正在通過Emscripten編譯我的代碼,所以它最終仍然是WebGL。 – Deathicon 2014-10-13 03:57:03