我正在使用Glut编写一些OpenGl教程

glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB | GLUT_DEPTH)

我明白它是怎么做的,但我不明白它是怎么做的?
查看定义:
GLUT_DOUBLE                        0x0002
GLUT_RGB                           0x0000
GLUT_DEPTH                         0x0010

我可以看到函数的参数中有一个或位明智的操作。
这个按位操作如何在上面的宏上工作?它们代表什么值,内存中的物理地址?
现在我只显示一些在400x400px窗口中旋转的形状,禁用这些参数似乎没有任何视觉效果。
谢谢!

最佳答案

其中两个常量GLUT_DOUBLEGLUT_DEPTH都包含一个设置位:

GLUT_DOUBLE = 0x0002 = 0b0000 0000 0000 0010
GLUT_DEPTH  = 0x0010 = 0b0000 0000 0001 0000

将这些常量与一个按位或创建一个设置了这两个位的新值,并且可以使用例如。
if ((display_mode & GLUT_DOUBLE) != 0) { ... }

GLUT_RGB为零。包括它对结果没有影响;我怀疑它表示默认情况下为真的设置。
使用的具体数字没有任何更深层次的意义。它们只是用来在一个整型参数中组合一组开/关选项。

关于c++ - glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB | GLUT_DEPTH)解释吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35514902/

10-12 00:31