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
Javascript 什么时候将Three.js纹理发送到GPU?_Javascript_Three.js_Textures_Gpu - Fatal编程技术网

Javascript 什么时候将Three.js纹理发送到GPU?

Javascript 什么时候将Three.js纹理发送到GPU?,javascript,three.js,textures,gpu,Javascript,Three.js,Textures,Gpu,我正在构建一个应用程序,从服务器动态加载图像以用作场景中的纹理,我正在研究如何正确加载/卸载这些纹理 我的简单问题是;在Three.js调用图中,纹理在哪里加载和/或更新到GPU?是在我创建纹理(var-tex=new THREE.texture())时,还是在我将其应用于网格(var-mesh=new THREE.mesh(geom,mat))时?三者之和表示创建纹理时未加载纹理。但我在这两个地方都找不到任何东西 我错过什么了吗?纹理是在渲染循环中加载的,而不是在对象创建时加载的?这可能是有道

我正在构建一个应用程序,从服务器动态加载图像以用作场景中的纹理,我正在研究如何正确加载/卸载这些纹理

我的简单问题是;在Three.js调用图中,纹理在哪里加载和/或更新到GPU?是在我创建纹理(
var-tex=new THREE.texture()
)时,还是在我将其应用于网格(
var-mesh=new THREE.mesh(geom,mat)
)时?三者之和表示创建纹理时未加载纹理。但我在这两个地方都找不到任何东西

我错过什么了吗?纹理是在渲染循环中加载的,而不是在对象创建时加载的?这可能是有道理的


提前谢谢

所有GPU指令都已抽象到WebGLRenderer

这意味着在three.js中创建任何对象都不会与GPU进行任何交互,直到您调用:

renderer.render(scene, camera);
此调用将自动设置所有相关的WebGL缓冲区、着色器、属性、制服、纹理等。因此,在该时间点之前,所有三个.js网格及其材质和几何体实际上都是非常抽象的对象,与渲染到屏幕的方式完全分离(为什么要假设它们会被渲染?)


这主要是因为还有其他渲染器,例如CanvasRenderer,它们具有完全不同的API。

所有GPU指令都已抽象到WebGLRenderer

这意味着在three.js中创建任何对象都不会与GPU进行任何交互,直到您调用:

renderer.render(scene, camera);
此调用将自动设置所有相关的WebGL缓冲区、着色器、属性、制服、纹理等。因此,在该时间点之前,所有三个.js网格及其材质和几何体实际上都是非常抽象的对象,与渲染到屏幕的方式完全分离(为什么要假设它们会被渲染?)


主要原因是其他渲染器,如CanvasRenderer,具有完全不同的API。

好的。所以我猜我几乎回答了这个问题。似乎上传/删除纹理是我的责任。如果这是准确的,是否意味着我保证不会弄乱GPU,除非我这样做像
renderer.render(场景,摄影机);
这样的方法?好吧。我想我几乎回答了这个问题。似乎上传/删除纹理是我的责任。如果这是准确的,是否意味着我保证不会弄乱GPU,除非我调用类似
renderer.render(场景,摄影机)的东西
?太好了!这正是我想要确认的。谢谢!太好了!这正是我想要确认的。谢谢!