我希望能够在屏幕上的缓冲区和屏幕外的缓冲区之间共享深度和模板缓冲区。(或者,换句话说,我希望能够使用屏幕上的深度和模板缓冲区渲染为纹理。)
我试图将共享的深度/模板渲染缓冲区绑定到默认的帧缓冲区,只是因为它会出错,提示“无法修改帧缓冲区0”。好的,所以我不能修改屏幕上的帧缓冲区。
然后,我尝试将默认帧缓冲区的模具/深度缓冲区绑定到辅助渲染缓冲区,但是再次出现错误,提示“无法查询帧缓冲区0”。
我当前的解决方法是创建两个屏幕外帧缓冲区,最后通过纹理和全屏四边形将主屏幕外缓冲区放到屏幕上。不完全漂亮。
不幸的是,webgl是基于OpenGL ES的,这个问题表明没有办法对OpenGL ES执行此操作。因此,我怀疑,尽管我希望我错了,但没有“更好”的方法。
不可能。
WebGL 1.0规范§5.14.6:
如果framebuffer为null,则绑定上下文提供的默认帧缓冲区,并且尝试修改或查询目标FRAMEBUFFER上的状态将生成INVALID_OPERATION错误。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句