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

前端之家收集整理的这篇文章主要介绍了Three.js – 渲染WebGLRenderTarget纹理的最有效方法是什么?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
问题

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

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

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

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

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

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

解决方法

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

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

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

原文链接:https://www.f2er.com/js/157511.html

猜你在找的JavaScript相关文章