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

时间:2015-03-02 10:18:45

标签: javascript three.js textures gpu

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

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

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

提前致谢!

1 个答案:

答案 0 :(得分:4)

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

这意味着在你打电话之前,在three.js中创建任何对象都不会与GPU交互:

renderer.render(scene, camera);

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

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