我正在使用VBO编写wavefront(.obj)加载器。
当调用“usemtl”时,我正在考虑将textureID与顶点,texCoord和普通数据一起发送。
使用该纹理ID可以在顶点/片段着色器内绑定纹理而无需调用glBindTexture吗?
答案 0 :(得分:2)
使用该纹理ID可以在顶点/片段着色器内绑定纹理而无需调用glBindTexture吗?
没有。纹理不受着色器的约束;他们受到上下文的约束。
如果您想获得技术支持,NV_bindless_texture允许此类功能,但这是特定于NVIDIA的。
答案 1 :(得分:1)
这是一般材料的问题,需要在渲染几何体之前进行切换。
最简单的方法是:foreach object in renderQueue
set_material()
draw_geometry()
当然,当一个物体必须用两种不同的材料渲染时,我们会遇到一些麻烦。另一个问题是性能,您通常会按材质对对象进行排序并保存切换(纹理,着色器和其他数据)