Javascript 什么时候将Three.js纹理发送到GPU?
我正在构建一个应用程序,从服务器动态加载图像以用作场景中的纹理,我正在研究如何正确加载/卸载这些纹理 我的简单问题是;在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))时?三者之和表示创建纹理时未加载纹理。但我在这两个地方都找不到任何东西 我错过什么了吗?纹理是在渲染循环中加载的,而不是在对象创建时加载的?这可能是有道
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(场景,摄影机)的东西
?太好了!这正是我想要确认的。谢谢!太好了!这正是我想要确认的。谢谢!