C++ glutInitDisplayMode(GLUT_双重| GLUT_RGB | GLUT_深度)解释?
我正在使用Glut编写一些OpenGl教程,我遇到了C++ glutInitDisplayMode(GLUT_双重| GLUT_RGB | GLUT_深度)解释?,c++,c,glut,C++,C,Glut,我正在使用Glut编写一些OpenGl教程,我遇到了 glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB | GLUT_DEPTH) 我知道它是做什么的,但我不知道它是怎么做的 看看定义: GLUT_DOUBLE 0x0002 GLUT_RGB 0x0000 GLUT_DEPTH 0x0010 我可以看到函数的参数
glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB | GLUT_DEPTH)
我知道它是做什么的,但我不知道它是怎么做的
看看定义:
GLUT_DOUBLE 0x0002
GLUT_RGB 0x0000
GLUT_DEPTH 0x0010
我可以看到函数的参数中有一个或位操作
这个按位操作如何在上面的宏上工作?它们代表的值是什么,内存中的物理地址
现在我正在显示一些在400x400px窗口中旋转的形状,禁用这些参数似乎没有任何视觉效果
谢谢 其中两个常量,
GLUT\u DOUBLE
和GLUT\u DEPTH
,每个常量都包含一个设置位:
GLUT_DOUBLE = 0x0002 = 0b0000 0000 0000 0010
GLUT_DEPTH = 0x0010 = 0b0000 0000 0001 0000
将这些常量与按位或组合在一起会创建一个新值,同时设置这两个位,可以使用例如
if ((display_mode & GLUT_DOUBLE) != 0) { ... }
GLUT\u RGB
为零。包括对结果无影响;我怀疑它表示默认情况下为真的设置
使用的具体数字没有任何更深层次的意义。它们只是用来在一个整数参数中组合一组开/关选项。其中两个常量,
GLUT\u DOUBLE
和GLUT\u DEPTH
,每个都包含一个设置位:
GLUT_DOUBLE = 0x0002 = 0b0000 0000 0000 0010
GLUT_DEPTH = 0x0010 = 0b0000 0000 0001 0000
将这些常量与按位或组合在一起会创建一个新值,同时设置这两个位,可以使用例如
if ((display_mode & GLUT_DOUBLE) != 0) { ... }
GLUT\u RGB
为零。包括对结果无影响;我怀疑它表示默认情况下为真的设置
使用的具体数字没有任何更深层次的意义。它们只是用来在一个整数参数中组合一组开/关选项的一种方式。至于标志的含义,请查看文档。特别是, 双倍过剩 位掩码,用于选择双缓冲窗口。如果还指定了GLUT_SINGLE,则该选项将覆盖该选项 超深 位掩码,用于选择具有深度缓冲区的窗口 双缓冲将使动画更加平滑。对于一个简单的程序,您可能看不到单缓冲和双缓冲之间有多大区别。对于更复杂的动画,差异是显著的 深度缓冲区对于三维图形非常重要
如果你想更详细地了解这些标志是如何工作的,我建议你做一些研究。至于这些标志的含义,请查看文档中的内容。特别是, 双倍过剩 位掩码,用于选择双缓冲窗口。如果还指定了GLUT_SINGLE,则该选项将覆盖该选项 超深 位掩码,用于选择具有深度缓冲区的窗口 双缓冲将使动画更加平滑。对于一个简单的程序,您可能看不到单缓冲和双缓冲之间有多大区别。对于更复杂的动画,差异是显著的 深度缓冲区对于三维图形非常重要
如果你想更详细地了解这些数字是如何工作的,我建议你做一些研究。将数字的十六进制表示转换成二进制可能会有所帮助。从这里开始,计算OR运算的结果很简单。它可能有助于将所涉及数字的十六进制表示形式转换为二进制。计算OR运算的结果非常简单。谢谢!关于数字的事情让我很困惑。谢谢你!关于数字的事情让我很困惑。