将数据从PBO传输到VBO

时间:2014-07-30 20:15:55

标签: opengl

我一直在试图将我的FBO中的数据转移到PBO到纹理以将其渲染为QUAD:

glGenFramebuffers(1, &framebuffer);
glBindFramebuffer(GL_FRAMEBUFFER, framebuffer);

glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, colorAttachment0, 0);
glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, GL_RENDERBUFFER, depthAttachment);

致我的PBO:

glGenBuffers(1, &bufferObj);
glBindBuffer(GL_PIXEL_UNPACK_BUFFER, bufferObj);
glBufferData(GL_PIXEL_UNPACK_BUFFER, 800 * 800 * 4, NULL, GL_DYNAMIC_DRAW);

但是我试着像这样转移它:(*这是问题 *的地方)..我的猜测

glReadBuffer(GL_COLOR_ATTACHMENT0);
glBindBuffer(GL_PIXEL_PACK_BUFFER, bufferObj);
glReadPixels(0, 0, WIDTH, HEIGHT, GL_RGBA, GL_UNSIGNED_BYTE, 0);
glBindBuffer(GL_PIXEL_PACK_BUFFER, 0);
glReadBuffer(GL_NONE);

我有代码从CUDA呈现PBO ..将其传输到纹理,并正确显示它 我可以通过将其纹理渲染为四边形来渲染我的FBO

问题是FBO与PBO之间的转换似乎正常运行,因为当我更换渲染FBO-> PBO代码时,它无法正常工作

1 个答案:

答案 0 :(得分:-2)

有些事情要尝试:

  • 确保在执行ReadPixels时仍然绑定了FBO。
  • 检查glGetError是否报告任何错误。
  • 尝试读取缓冲区(常规C数组),而不是绑定PBO,看看是否正在填写正确的值。