首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >glutInitDisplayMode(GLUT_DOUBLE,GLUT_RGB,GLUT_DEPTH)解释?

glutInitDisplayMode(GLUT_DOUBLE,GLUT_RGB,GLUT_DEPTH)解释?
EN

Stack Overflow用户
提问于 2016-02-19 20:58:15
回答 2查看 6.2K关注 0票数 1

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

代码语言:javascript
复制
glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB | GLUT_DEPTH)

我明白它的作用,但我不明白的是它是如何做到的?

看一下这些定义:

代码语言:javascript
复制
GLUT_DOUBLE                        0x0002
GLUT_RGB                           0x0000
GLUT_DEPTH                         0x0010

我可以看到,在函数的参数中有一个或一些明智的操作。

这个按位操作如何在上面的宏上工作?它们所代表的值是什么,来自内存的物理地址?

现在,我只是在一个400x400PX窗口中显示一些旋转的形状,而禁用这些参数似乎没有任何视觉效果。

谢谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-02-19 21:06:25

其中两个常量,GLUT_DOUBLEGLUT_DEPTH,每个包含一个集合位:

代码语言:javascript
复制
GLUT_DOUBLE = 0x0002 = 0b0000 0000 0000 0010
GLUT_DEPTH  = 0x0010 = 0b0000 0000 0001 0000

将这些常量与按位OR组合,就可以使用这两个位集创建一个新值,并且可以使用以下方法检查这些位是否在结果值中设置。

代码语言:javascript
复制
if ((display_mode & GLUT_DOUBLE) != 0) { ... }

GLUT_RGB是零。包括它对结果没有影响;我怀疑它表示默认为真的设置。

使用的具体数字没有任何更深层次的意义。它们只是用作在单个整数参数中组合一组on/off选项的方法。

票数 4
EN

Stack Overflow用户

发布于 2016-02-19 22:00:52

至于标志的含义,请检查glutInitDisplayMode()的文档。特别地,

GLUT_DOUBLE 位掩码选择双缓冲窗口。如果还指定了GLUT_SINGLE,则会重写它。 GLUT_DEPTH 位掩码选择具有深度缓冲区的窗口。

双缓冲将使您的动画更加流畅。对于一个简单的程序,您可能不会看到单一缓冲和双缓冲之间的差别。对于更复杂的动画,差异是显著的。

深度缓冲区对于三维图形非常重要。

我建议做一些研究,如果你想了解这些如何更详细的工作。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35514902

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档