shaderStorageBuffer在屏幕外渲染中不起作用

时间:2018-08-02 13:44:09

标签: c++ opengl

我通常使用shaderStorageBuffer读取着色器中的一些中间结果以进行调试。最近我在代码中发现了问题。当我渲染到屏幕外FBO时,shaderStorageBuffer不起作用。 这里列出了部分代码:

 glBindBuffer(GL_SHADER_STORAGE_BUFFER, shaderTempBuffer);
 glBufferData(GL_SHADER_STORAGE_BUFFER, 100 * sizeof(float4), NULL, GL_STATIC_DRAW);

 glBindBufferBase(GL_SHADER_STORAGE_BUFFER, bindingIndex2, shaderTempBuffer);
 glShaderStorageBlockBinding(render3DfluidProg, m_ShaderStorageBlockIndex2, bindingIndex2);

  /*  glBindFramebuffer(GL_FRAMEBUFFER, nextFboBuffer);
    glViewport(0, 0, 800, 600);
    glClearBufferfv(GL_COLOR, 0, black);
    glClearBufferfv(GL_DEPTH, 0, white);*/

....

我使用glMapBuffer来获取返回结果,它们都是零。但是,当我删除带有批注的代码以渲染到默认的FBO中时,缓冲区可以获得正确的结果。我只是不知道为什么?似乎只能在渲染到默认FBO的着色器中更改shaderStorageBuffers的结果。

0 个答案:

没有答案