在着色器内绑定纹理

时间:2013-01-13 03:36:36

标签: opengl binding textures shader wavefront

我正在使用VBO编写wavefront(.obj)加载器。

当调用“usemtl”时,我正在考虑将textureID与顶点,texCoord和普通数据一起发送。

使用该纹理ID可以在顶点/片段着色器内绑定纹理而无需调用glBindTexture吗?

2 个答案:

答案 0 :(得分:2)

  

使用该纹理ID可以在顶点/片段着色器内绑定纹理而无需调用glBindTexture吗?

没有。纹理不受着色器的约束;他们受到上下文的约束。

如果您想获得技术支持,NV_bindless_texture允许此类功能,但这是特定于NVIDIA的。

答案 1 :(得分:1)

这是一般材料的问题,需要在渲染几何体之前进行切换。

最简单的方法是:

foreach object in renderQueue
    set_material()
    draw_geometry()

当然,当一个物体必须用两种不同的材料渲染时,我们会遇到一些麻烦。另一个问题是性能,您通常会按材质对对象进行排序并保存切换(纹理,着色器和其他数据)