我创建了一个帧缓冲区:
glBindFramebuffer(GL.GL_FRAMEBUFFER, &fbo);
glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_RENDERBUFFER, rbo);
正在通过
从帧缓冲区读取像素glBindFramebuffer(GL_FRAMEBUFFER, &fbo);
glReadPixels(0, 0, w, h, GL_RGBA, GL_FLOAT, &data);
相当于
glReadBuffer(GL_COLOR_ATTACHMENT0);
glReadPixels(0, 0, w, h, GL_RGBA, GL_FLOAT, &data);
?
最佳答案
这不是等效的,读取 GL_COLOR_ATTACHMENT0
将从当前绑定(bind)的帧缓冲区中获取数据,这可能与您创建的完全不同。
所以基本上你需要通过调用来保证你有你的帧缓冲区
glBindFramebuffer(GL_FRAMEBUFFER, &fbo);
在使用它的任何操作之前。
GL_COLOR_ATTACHMENT0 只是Frame buffer 对象的一个属性,与任何具体的frame buffer 无关。通过使用另一个帧缓冲区绑定(bind)调用它,您将读取它的数据,这不是您想要的。
关于opengl - 绑定(bind)Framebuffer还是设置ReadBuffer?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34009406/