Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/three.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Three.js 将单个对象/网格立即渲染到渲染目标中_Three.js - Fatal编程技术网

Three.js 将单个对象/网格立即渲染到渲染目标中

Three.js 将单个对象/网格立即渲染到渲染目标中,three.js,Three.js,我需要使用THREE.WebGLRenderTarget将场景中的单个特定网格渲染到纹理中。我已经了解到,在渲染场景的过程中,除此之外的所有其他网格都将被忽略。所以,我基本上实现了我的目标。我讨厌的是,在场景的渲染过程中,我的整个场景图仍然有很多不必要的工作要做。我需要在每一帧渲染这个纹理,所以用我当前的方法我可以得到极值fps下拉列表。(整个场景图中有许多网格) 所以我找到的是来自THREE.WebGLRenderer的函数“renderBufferImmediate”。(链接到渲染器源代码)

我需要使用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
参数中,然后就可以了。