Advertisement

GLSL通过FBO渲染至多个贴图(MRT)

阅读量:

项目中的程序设计需要将一帧渲染生成的画面分解为三个通道的单色图像,并分别存储在三张纹理中。绘制到纹理中自然会想到FBO这一技术。然而当需要输出多张纹理时还不熟悉相关操作流程通过一番网络搜索后最终掌握了MRT(多重渲染目标)的概念然而在网上的教程中通常会使用Fragment Shaders中的预置变量gl_FragData[]这一工具但在实际应用中发现该glsl语言提示该变量不建议直接使用于是又进一步查阅资料了解到具体的实现方式

自然首先是要建立一个新的FBO,并在此之后绑定缓存。通常情况下,我们会将颜色缓冲区和深度缓冲区进行绑定。如果是为了将图像渲染到纹理中,则我们可以将同样尺寸的纹理绑定到颜色缓冲区中使用。例如:

复制代码
 //新建FBO

    
 GLuint fboId;
    
 glGenFramebuffersEXT(1, &fboId);
    
 glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, fboId);
    
  
    
 //绑定纹理
    
 glFramebufferTexture2DEXT(GL_FRAMEBUFFER_EXT, GL_COLOR_ATTACHMENT0_EXT,
    
                       GL_TEXTURE_2D, textureId, 0);

全部评论 (0)

还没有任何评论哟~