7

问题

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

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

我尝试使用第二个渲染器,但在从渲染器 B 绘制到渲染器 A 后尝试在渲染器 A 中使用 WebGLRenderTarget 时,我似乎收到此错误:

WebGL: INVALID_OPERATION: bindTexture: object not from this context

例子

作为参考,您可以在此处查看我的摘要页面(警告:由于我正在询问的问题,此页面可能会延迟您)。我在辅助场景中的平面上运行单纯形函数,并使用相机放置将其分割成多个部分,然后通过 WebGLRenderTarget 将这些片段应用于平铺片段,以便它们流畅但单独的片段。

问题

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

4

1 回答 1

4

renderer.setSize()仅当渲染到屏幕时,渲染器使用其中的尺寸参数来设置视口。

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

因此,您的问题的答案是两者都使用相同的渲染器是可以的;没有效率低下。

于 2012-10-06T15:23:23.707 回答