Three.js 纹理何时发送到 GPU?

Jon*_*s.z 1 javascript textures gpu three.js

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

我的简单问题是;在 Three.js 调用图中,纹理是否被加载和/或更新到 GPU 中?是在创建纹理 ( var tex = new THREE.Texture()) 时还是将其应用于网格 ( var mesh = new THREE.Mesh(geom, mat)) 时?该纹理类三的说明,创建纹理贴图时不加载。但是我在Mesh 中也找不到任何东西。

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

提前致谢!

Bre*_*ble 5

所有 GPU 指令都被抽象为 WebGLRenderer。

这意味着在 Three.js 中创建的任何对象都不会与 GPU 有丝毫交互,直到您调用:

renderer.render(scene, camera);
Run Code Online (Sandbox Code Playgroud)

此调用将自动设置所有相关的 WebGL 缓冲区、着色器、属性、制服、纹理等。 因此,在那个时间点之前,所有具有材料和几何形状的三个 .js 网格实际上只是很好地抽象对象,完全与方式分离它们被渲染到屏幕上(为什么假设它们会被渲染?)。

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