Three.js 将单个对象/网格立即渲染到渲染目标中
我需要使用THREE.WebGLRenderTarget将场景中的单个特定网格渲染到纹理中。我已经了解到,在渲染场景的过程中,除此之外的所有其他网格都将被忽略。所以,我基本上实现了我的目标。我讨厌的是,在场景的渲染过程中,我的整个场景图仍然有很多不必要的工作要做。我需要在每一帧渲染这个纹理,所以用我当前的方法我可以得到极值fps下拉列表。(整个场景图中有许多网格) 所以我找到的是来自THREE.WebGLRenderer的函数“renderBufferImmediate”。(链接到渲染器源代码)实现目标的伪代码如下所示:Three.js 将单个对象/网格立即渲染到渲染目标中,three.js,Three.js,我需要使用THREE.WebGLRenderTarget将场景中的单个特定网格渲染到纹理中。我已经了解到,在渲染场景的过程中,除此之外的所有其他网格都将被忽略。所以,我基本上实现了我的目标。我讨厌的是,在场景的渲染过程中,我的整个场景图仍然有很多不必要的工作要做。我需要在每一帧渲染这个纹理,所以用我当前的方法我可以得到极值fps下拉列表。(整个场景图中有许多网格) 所以我找到的是来自THREE.WebGLRenderer的函数“renderBufferImmediate”。(链接到渲染器源代码)
var mesh = some_Mesh;
var renderer = some_WebGLRenderer;
var renderTarget = some_WebGLRenderTarget;
renderer.setRenderTarget(renderTarget);
var materialProperties = renderer.properties.get(mesh.material);
var program = materialProperties.program;
renderer.renderBufferImmediate(mesh, program, mesh.material);
var texture = renderTarget.texture;
renderBufferImmediate函数采用THREE.Object3D、WebGLShaderProgram和THREE.Material的实例。我在这里看到的问题是:这个函数的实现试图查找Object3D的属性,而afaik并不存在。(如“hasPositions”或“hasNormals”)。简言之:我的方法行不通
如果有人能告诉我,我是否可以将此函数用于我的目的(意味着我目前使用它是错误的),或者我的问题是否有其他解决方案,我将不胜感激
提前感谢。这不容易做到。仅供参考,
Object3D
是一系列其他类的基类,包括Group
和Mesh
,因此您可以将后两者中的任何一个传递到Object3D
参数中,然后就可以了。