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