Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ glutInitDisplayMode(GLUT_双重| GLUT_RGB | GLUT_深度)解释?_C++_C_Glut - Fatal编程技术网

C++ glutInitDisplayMode(GLUT_双重| GLUT_RGB | GLUT_深度)解释?

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 我可以看到函数的参数

我正在使用Glut编写一些OpenGl教程,我遇到了

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运算的结果非常简单。谢谢!关于数字的事情让我很困惑。谢谢你!关于数字的事情让我很困惑。