我一直想知道:OpenGL对象"名称",由glGenTextures等生成的整数,似乎永远不会为零,所以我使用零来表示未初始化的句柄并检查错误.到目前为止一切都还好.
我还被告知,在完成一个对象之后调用glBind*(0)是一个好习惯,以确保之后不会意外地操纵延迟绑定的对象.听起来很明智.
是否有任何情况下OpenGL对象ID为零,使我的测试无效,或者以这种方式使用零会产生令人惊讶的效果,因为它不引用非对象?
PS是否存在零作为非对象的符号名称?
PPS是否会因大量使用绑定/解除绑定模式而遭受性能损失?(由于封装,代码的某些部分主要是冗余的重新绑定.)
每个对象类型都有一个对应的名称空间.对象的名称由uint类型的无符号整数表示.GL保留名称零; 对于某些对象类型,零名称是该类型的默认对象,而在其他对象类型中,零将永远不会对应于该对象类型的实际实例.
您可以依赖名称生成函数(例如GenBuffers)永远不会返回零作为生成的名称.您可以使用零来表示"无对象".
是否存在 OpenGL 对象 ID 为零的情况,使我的测试无效,或者以这种方式使用零会产生令人惊讶的效果,因为它不引用非对象?
纹理。绑定纹理0与glDisable(GL_TEXTURE_[1|2|3]D).