【发布时间】:2018-03-11 23:34:41
【问题描述】:
在 WebGL(我相信 OpenGL)中使用纹理的简单过程中,执行以下操作是有意义的:
- 使用
gl.activeTexture()激活纹理单元 - 用
gl.bindTexture()绑定纹理 - 与
gl.texParameteri()和朋友一起设置参数 - 使用
gl.texImage2D()上传数据 - 使用
gl.uniform1i()将正确的单位分配给采样器 - 画
这也是各种书籍和教程学习该技术所采用的方法。
但是,在更高级的用法中,纹理可能会被重新用于不同的着色器,或者希望在加载和渲染之间进行拆分,在渲染时间之前,步骤 1(分配纹理单元)似乎是不必要的。
纹理单元真的会影响纹理本身的设置吗?
换句话说 - 以下方法可以吗?
PREP(对于每个纹理,在任何渲染调用之前)
- 不要激活纹理单元(这里总是默认为 0)
- 用
gl.bindTexture()绑定纹理 - 与
gl.texParameteri()和朋友一起设置参数 - 使用
gl.texImage2D()上传数据
渲染(在每个刻度上)
- 使用
gl.activeTexture()激活所需的纹理单元 - 用
gl.bindTexture()绑定纹理 - 使用
gl.uniform1i()将正确的单位分配给采样器 - 画
【问题讨论】:
-
你是对的,通常没有理由在初始化时调用
gl.activeTexture和it's normal to bind textures to different texture units at render time。 stackoverflow.com/a/20850791/128511
标签: webgl