小彪的3D世界

小彪的狗窝

IT博客 联系 聚合 管理
  2 Posts :: 4 Stories :: 0 Comments :: 0 Trackbacks

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
所以此表达式有可能在某些情况不为真,要知道此处的错误很可能导致长时间的调试.

posted on 2008-06-04 00:50 Game Fun 阅读(1262) 评论(0)  编辑 收藏 引用 所属分类: OpenGL
只有注册用户登录后才能发表评论。