opengl - 如果指定了 GL_COLOR_BUFFER_BIT 掩码,glBlitFramebuffer 是否会复制所有颜色附件?

标签 opengl graphics framebuffer blit

如果我将像素从一个 FBO 复制到另一个,并且每个像素都有多个(不必相同数量)颜色附件,并且我的掩码是 GL_COLOR_BUFFER_BIT ,它复制了哪些颜色的附件(GL_COLOR_ATTACHMENT0GL_COLOR_ATTACHMENT1、...、GL_COLOR_ATTACHMENTi)?他们都是?如果是,如果这些 FBO 附加了不同数量的颜色缓冲区怎么办?

假设有 2 个 FBO 以这种方式绑定(bind):

glBindFramebuffer(GL_READ_FRAMEBUFFER, fbo1); 
glBindFramebuffer(GL_DRAW_FRAMEBUFFER, fbo2); 

请注意 fbo1有 2 个颜色附件和 fbo2有 4 个颜色附件。

那么glBlitFrameBuffer在这种情况下,blit 颜色附件?

我在 OpenGL 文档中的任何地方都找不到这个。

最佳答案

一个 framebuffer color blitting operation只会从 current glReadBuffer 中读取对于GL_READ_FRAMEBUFFER , 它只会写到 the glDrawBuffers GL_DRAW_FRAMEBUFFER 指定.所以这与附件无关;这是关于两个帧缓冲区的读取和绘制缓冲区。

关于opengl - 如果指定了 GL_COLOR_BUFFER_BIT 掩码,glBlitFramebuffer 是否会复制所有颜色附件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17691702/

相关文章:

opengl - 各种OpenGL函数的相对成本?

javascript - 从哪里开始学习如何制作类似可视化程序的程序比较好?

ios - 为什么在 iOS 上,glRenderbufferStorage 似乎失败了?

opengl - 在 OpenGL 中调整整个场景的亮度/ Gamma

c - C 中的 OpenGL 对象加载器

java - 使用 Java 处理绘制数据图形

performance - 优化 GPU 到 CPU 的数据传输

android - OpenGL 渲染到纹理 - 黑屏

linux - 如何使用 clutter 直接渲染到 linux framebuffer?

opengl - AVI或任何在opengl后台播放的视频文件