微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Three.js – 渲染WebGLRenderTarget纹理的最有效方法是什么?

问题

我已经在我的项目中得到了一个点,我正在渲染WebGLrendertargets并将它们用作主场景中的纹理.它可以工作,但似乎我有它做了比它需要更多的工作.我生成的纹理只需要64×64,但由于我正在使用我的主渲染器(窗口宽度乘窗口高度),因此不必要地以更大的分辨率渲染WebGLrendertargets.

我可能错了,但我相信这会增加绘制到每个rendertarget所需的处理以及然后将大纹理绘制到网格所需的处理.

我尝试过使用第二个渲染器,但是在渲染器B中绘制到渲染器后尝试使用WebGLrendertarget时,我似乎遇到了这个错误

WebGL:INVALID_OPERATION:bindTexture:对象不是来自此上下文

作为参考,你可以看到我抽象的页面here(警告:由于我正在询问的问题,这个页面可能会滞后于你).我正在我的辅助场景中的平面上运行单面函数,并使用相机放置将其切割成多个部分,然后通过WebGLrendertarget将这些片段应用到平铺片段,以便它们能够流畅但个性化.

我是否正确地假设使用相同的渲染器大小比渲染较小的渲染器效率低得多?如果是这样,您认为最佳解决方案是什么?目前有没有办法实现这种优化?

解决方法

renderer.setSize()中的size参数由渲染器用于在仅渲染到屏幕时设置视口.

当渲染器渲染到屏幕外渲染目标时,渲染到的纹理的大小由参数rendertarget.width和rendertarget.height给出.

所以你的问题的答案是可以为两者使用相同的渲染器;没有低效率.

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐