我目前正在尝试实现级联多采样方差阴影贴图。虽然我的非多采样贴图似乎工作得很好,但我在解决多采样数组纹理方面遇到了问题。OpenGL文档说我应该使用glBlitFramebuffer
调用来解析这些纹理。但是,在查看RenderDoc中已解析的数组纹理后,似乎只有数组的第一层显示为BLIT。
到目前为止,我已经缩小了问题的范围:
- 单样本(无blit)级联/数组方差图工作正常。
- 多样本(使用Blit/Resolve)非级联方差图工作正常。
- 多采样级联方差贴图仅对纹理数组中的第一个纹理进行blit/solve。
我在这里有什么选择?理想情况下,我仍然希望在光照过程中使用2D数组纹理进行采样,但我不确定应该如何对多个数组层进行blit来解决多重采样。
当前解析代码:shadow_fbo[0]
作为帧缓冲区,绑定GL_TEXTURE_2D_MULTISAMPLE_ARRAY
,shadow_fbo[1]
,GL_TEXTURE_2D_ARRAY
绑定GL_COLOR_ATTACHMENT0
:
glBindFramebuffer(GL_READ_FRAMEBUFFER, shadow_fbo[0]);
glReadBuffer(GL_COLOR_ATTACHMENT0);
glBindFramebuffer(GL_DRAW_FRAMEBUFFER, shadow_fbo[1]);
glBlitFramebuffer(0, 0, size, size, 0, 0, size, size, GL_COLOR_BUFFER_BIT, GL_NEAREST);
1条答案
按热度按时间xxslljrj1#
对分层图像进行分块只会影响层0。如果要对源和目标图像的所有层进行blit,则必须将每一对层附加到帧缓冲区,对其进行blit,然后再附加下一对层,对其进行blit等操作。