Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/382.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

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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/templates/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
Javascript 如何比较Three.js中的像素_Javascript_Three.js_Webgl - Fatal编程技术网

Javascript 如何比较Three.js中的像素

Javascript 如何比较Three.js中的像素,javascript,three.js,webgl,Javascript,Three.js,Webgl,我在three.js中有两个纹理,我想在像素级别进行比较。但是我不知道怎么做。Three.js文档并没有回答我的问题。事实上,有些类是没有文档记录的 简而言之,我想计算两幅图像的不同程度(在我的遗传算法中计算适应值) 编辑:有人告诉我应该提供更多信息。我们开始吧 一个纹理来自使用“loadTexture”加载的图像: 在获取另一个场景时,我将一些多边形添加到第二个场景中,然后将该场景渲染为纹理: var bufferScene = new THREE.Scene(); var bufferTex

我在three.js中有两个纹理,我想在像素级别进行比较。但是我不知道怎么做。Three.js文档并没有回答我的问题。事实上,有些类是没有文档记录的

简而言之,我想计算两幅图像的不同程度(在我的遗传算法中计算适应值)

编辑:有人告诉我应该提供更多信息。我们开始吧

一个纹理来自使用“loadTexture”加载的图像:

在获取另一个场景时,我将一些多边形添加到第二个场景中,然后将该场景渲染为纹理:

var bufferScene = new THREE.Scene();
var bufferTexture = new THREE.WebGLRenderTarget( window.innerWidth, window.innerHeight, { minFilter: THREE.LinearFilter, magFilter: THREE.NearestFilter,format: THREE.RGBAFormat});
bufferScene.add(triangle) //This is a bucle in the real code.
renderer.setSize(256,256);
requestAnimationFrame( render );
renderer.render(bufferScene, camera, bufferTexture);

提前谢谢。

您可以在画布上绘制与纹理大小相同的纹理,并使用从帧缓冲区读取像素颜色。之后,您可以在CPU上比较值


您还可以在GPU上执行像素颜色减法并渲染差异(然后读取像素)。

您可以在画布上绘制与纹理大小相同的纹理,并使用从帧缓冲区读取像素颜色。之后,您可以在CPU上比较值


您还可以在GPU上执行像素颜色减法并渲染差异(然后读取像素)。

您可以将每个纹理附加到渲染目标,然后调用
渲染器。readRenderTargetPixels
获取每个纹理的像素,然后进行比较


可以使用区分两个纹理的着色器将两个纹理渲染到另一个渲染目标,然后使用
渲染器从该渲染目标读取像素。readRenderTargetPixels

可以将每个纹理附加到渲染目标,然后调用
renderer.readRenderTargetPixels
获取每个纹理的像素,然后进行比较


您可以使用区分两个纹理的着色器将两个纹理渲染到另一个渲染目标,然后使用
渲染器从该渲染目标中读取像素。readRenderTargetPixels

您的问题过于笼统,无法给出精确的答案。如果您有一个简单的示例代码来完成您要做的事情,这会很有帮助。如果没有代码或特定的API接口名称,很难猜出您要问的是Three.js API的哪一部分。您的问题太笼统了,无法给出精确的答案。如果您有一个简单的示例代码来完成您要做的事情,这会很有帮助。如果没有代码或特定的API接口名称,很难猜出您询问的Three.js API的哪一部分。我无法绘制画布,因为我需要在屏幕上同时显示这两种纹理。我无法绘制画布,因为我需要在屏幕上同时显示这两种纹理。谢谢。我想我将尝试第一个选项,因为着色器非常复杂。两种方法都一样好还是第二种方法更快?谢谢。我想我将尝试第一个选项,因为着色器非常复杂。这两种方法都一样好还是第二种更快?
var bufferScene = new THREE.Scene();
var bufferTexture = new THREE.WebGLRenderTarget( window.innerWidth, window.innerHeight, { minFilter: THREE.LinearFilter, magFilter: THREE.NearestFilter,format: THREE.RGBAFormat});
bufferScene.add(triangle) //This is a bucle in the real code.
renderer.setSize(256,256);
requestAnimationFrame( render );
renderer.render(bufferScene, camera, bufferTexture);