GLboolean是否OpenGL内置的数据类型,之所以使用它是因为OpenGL本身是一个跨平台的3D图形库,所以通常鼓励在使用OpenGL进行编程时尽量使用其内置的数据类型以提高移植性,但必须注意到的是:在Windows平台中的VC8.0测试中发现,GLboolean实际上是unsigned int型,而很多人往往会由于其名称的缘故而将它当作bool型别来使用,这样不仅会带来隐式型别转换带来的效率问题,而已更严重的是由于其实际型别为unsigned int,所以可能导致表达式的非恒等性!
例如:当我们不小心写下如下语句
GLboolean test = GL_TRUE;
// 以下为中间过程语句
if (test == GL_TRUE)
{
.
}
并人为结果比较结果肯定为真时,其结果有时候会令你失望!
因为由于test为的实际型别为unsigned int ,所以其在上述的中间过程中有可能被无意间修改为其它的位于unsigend int范围内的值,而GL_TRUE实际上是一个宏定义#define GL_TRUE 1
所以此表达式有可能在某些情况不为真,要知道此处的错误很可能导致长时间的调试.