我正在使用自定义着色器并尝试优化渲染的Three.js中的WebGL场景。为此,我想了解:数据传递到GPU的时间和频率是多少?
作为属性或制服传递到着色器中的每个顶点,uv等是否需要在每个帧中传递,或者这些值是否被传递一次并缓存,直到用户发送给定属性或统一的新数据为止键?
我很感激其他人在描述数据在WebGL中传递到GPU时的任何帮助。
答案 0 :(得分:1)
BufferGeometry非常有效,因为它在声明网格时只向发送一次的属性(例如UV,法线,顶点和索引)。
如果要在启动后对其中一个属性进行更改,则必须在以后的帧中将其input
属性设置为true,然后将设置为它将被重新发送到GPU。否则,初始值将保持在GPU缓存中不受干扰。
请参阅:https://threejs.org/docs/#api/core/BufferAttribute.needsUpdate