我想从一个帧缓冲区复制到另一个帧缓冲区
这是我的代码:
我正在从后面到前面的帧缓冲区复制rects
for (int i = 0; i < rectangles->size; i++)
{
glBindFramebufferEXT(GL_READ_FRAMEBUFFER_EXT, backFramebufferId);
checkForGLError("back to front Binded read backFramebufferId...");
glReadBuffer(GL_COLOR_ATTACHMENT0_EXT);
glBindFramebufferEXT(GL_DRAW_FRAMEBUFFER_EXT, frontFramebufferId);
checkForGLError("back to front Binded write frontFramebufferId...");
glDrawBuffer(GL_COLOR_ATTACHMENT0_EXT);
sourcex1 = rectangles -> rectangles[i].srcX;
sourcey1 = rectangles -> rectangles[i].srcY;
int currDstX = rectangles -> rectangles[i].dstX;
int currDstY = rectangles -> rectangles[i].dstY;
int w = rectangles -> rectangles[i].width;
int h = rectangles -> rectangles[i].height;
glBlitFramebufferEXT(sourcex1, sourcey1,
sourcex1 + w, sourcey1 + h,
currDstX, currDstY,
currDstX + w, currDstY + h,
GL_COLOR_BUFFER_BIT, GL_LINEAR);
checkForGLError("back to front glBlitFramebufferEXT...");
glBindFramebufferEXT(GL_READ_FRAMEBUFFER_EXT, 0);
glBindFramebufferEXT(GL_DRAW_FRAMEBUFFER_EXT, 0);
然后在这个循环中我在后面的framebufferbuffer中复制整个前帧缓冲区
glBindFramebufferEXT(GL_READ_FRAMEBUFFER_EXT, frontFramebufferId);
checkForGLError("front to back Binded read frontFramebufferId...");
glReadBuffer(GL_COLOR_ATTACHMENT0_EXT);
glBindFramebufferEXT(GL_DRAW_FRAMEBUFFER_EXT, backFramebufferId);
checkForGLError("front to back Binded write backFramebufferId...");
glDrawBuffer(GL_COLOR_ATTACHMENT0_EXT);
glBlitFramebufferEXT(0, 0,
frameWidth, frameHeight,
0, 0,
frameWidth, frameHeight,
GL_COLOR_BUFFER_BIT, GL_LINEAR);
checkForGLError("front to back glBlitFramebufferEXT...");
glBindFramebufferEXT(GL_READ_FRAMEBUFFER_EXT, 0);
glBindFramebufferEXT(GL_DRAW_FRAMEBUFFER_EXT, 0);
} // end of loop
我想问一下,这段代码是对还是我有些错误?