glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB | GLUT_DEPTH) 解释?
glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB | GLUT_DEPTH) explanation?
我正在使用 Glut 编写一些 OpenGl 教程,我遇到了
glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB | GLUT_DEPTH)
我明白它的作用,但我不明白它是如何做到的?
查看定义:
GLUT_DOUBLE 0x0002
GLUT_RGB 0x0000
GLUT_DEPTH 0x0010
而且我可以看到在函数的参数中有一个 OR 位运算。
这个按位运算如何作用于上面的宏?它们代表什么值,来自内存的物理地址?
现在我只是显示一些以 400x400 像素旋转的形状 window,禁用任何这些参数似乎没有任何视觉效果。
谢谢!
其中两个常量,GLUT_DOUBLE
和 GLUT_DEPTH
,每个都包含一组位:
GLUT_DOUBLE = 0x0002 = 0b0000 0000 0000 0010
GLUT_DEPTH = 0x0010 = 0b0000 0000 0001 0000
将这些常量与按位 OR 组合会创建一个新值,同时设置这两个位,并且可以使用例如
检查结果值中是否设置了这些位
if ((display_mode & GLUT_DOUBLE) != 0) { ... }
GLUT_RGB
为零。包含它对结果没有影响;我怀疑它代表了一个默认设置。
使用的具体数字没有任何更深层次的意义。它们只是用作在单个整数参数中组合一堆 on/off 选项的方法。
至于标志的含义,请查看 glutInitDisplayMode() 的文档。特别是,
GLUT_DOUBLE
Bit mask to select a double buffered window. This overrides GLUT_SINGLE if it is also specified.
GLUT_DEPTH
Bit mask to select a window with a depth buffer.
双缓冲将使您的动画更加流畅。对于一个简单的程序,您可能看不到单缓冲和双缓冲之间的太大区别。对于更复杂的动画,差异是显着的。
深度缓冲区对于 3D 图形很重要。
如果您想更详细地了解这些工作原理,我建议您做一些研究。
我正在使用 Glut 编写一些 OpenGl 教程,我遇到了
glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB | GLUT_DEPTH)
我明白它的作用,但我不明白它是如何做到的?
查看定义:
GLUT_DOUBLE 0x0002
GLUT_RGB 0x0000
GLUT_DEPTH 0x0010
而且我可以看到在函数的参数中有一个 OR 位运算。
这个按位运算如何作用于上面的宏?它们代表什么值,来自内存的物理地址?
现在我只是显示一些以 400x400 像素旋转的形状 window,禁用任何这些参数似乎没有任何视觉效果。
谢谢!
其中两个常量,GLUT_DOUBLE
和 GLUT_DEPTH
,每个都包含一组位:
GLUT_DOUBLE = 0x0002 = 0b0000 0000 0000 0010
GLUT_DEPTH = 0x0010 = 0b0000 0000 0001 0000
将这些常量与按位 OR 组合会创建一个新值,同时设置这两个位,并且可以使用例如
检查结果值中是否设置了这些位if ((display_mode & GLUT_DOUBLE) != 0) { ... }
GLUT_RGB
为零。包含它对结果没有影响;我怀疑它代表了一个默认设置。
使用的具体数字没有任何更深层次的意义。它们只是用作在单个整数参数中组合一堆 on/off 选项的方法。
至于标志的含义,请查看 glutInitDisplayMode() 的文档。特别是,
GLUT_DOUBLE
Bit mask to select a double buffered window. This overrides GLUT_SINGLE if it is also specified.
GLUT_DEPTH
Bit mask to select a window with a depth buffer.
双缓冲将使您的动画更加流畅。对于一个简单的程序,您可能看不到单缓冲和双缓冲之间的太大区别。对于更复杂的动画,差异是显着的。
深度缓冲区对于 3D 图形很重要。
如果您想更详细地了解这些工作原理,我建议您做一些研究。