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

When is a Three.js Texture sent to the GPU?

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

我的简单问题是;在 Three.js 调用图中,纹理会在何处加载 and/or 更新到 GPU 中?是在创建纹理时 (var tex = new THREE.Texture()) 还是在将其应用于网格时 (var mesh = new THREE.Mesh(geom, mat))? Texture class of Three suggests that textures are not loaded when creating the texture. But I cannot find anything in Mesh 要么。

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

提前致谢!

所有 GPU 指令都已抽象到 WebGLRenderer。

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

renderer.render(scene, camera);

此调用将自动设置所有相关的 WebGL 缓冲区、着色器、属性、制服、纹理等。因此,在那个时间点之前,所有 three.js 网格及其材质和几何形状都被很好地抽象化了对象,完全独立于它们在屏幕上的呈现方式(为什么假设它们会被呈现?)。

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