如何通过openGL或Glut检查窗口是不是打开

Posted

技术标签:

【中文标题】如何通过openGL或Glut检查窗口是不是打开【英文标题】:How to check window is open via openGL or Glut如何通过openGL或Glut检查窗口是否打开 【发布时间】:2018-04-14 12:43:25 【问题描述】:

我在 SFML 中看到了一个名为 isOpen 的方法,它检查窗口是否打开。

openGL 或 GLUT 中是否有类似的等效项来检查窗口是否打开?

【问题讨论】:

@Rabbid76,如何检查特定窗口 ID 是否存在? @Rabbid76 我想知道 SFML 是如何执行的。 @Rabbid76 我从 GLUT 转到 SFML,现在我正试图将我的代码转换回 GLUT,因为 SFML 渲染对象的距离相关优先级有误。 【参考方案1】:

OpenGL 渲染到附加到 OpenGL 渲染上下文的帧缓冲区。渲染上下文可能是从将(默认)帧缓冲区连接到窗口的窗口创建的,但这超出了 OpenGL 规范的范围。

至于 GLUT 你可以使用glutSetWindow 设置你要检查它是否存在的窗口id,然后做glutGetWindow。如果它返回先前设置的窗口ID,则该窗口存在。如果不是,glutSetWindow 显然失败了,因为窗口不存在。

这是否属实seems implementation dependent,但我怀疑有人会愚蠢到在这种微不足道的情况下不实施错误处理。

【讨论】:

使用glutSetWindow 有开销吗?还可以保证现有窗口的窗口 id >0 吗? @ar2015 是的,虽然我没有测量多少,因为我的应用程序在出现的部分都没有性能问题。是的,你的第二个问题,"The range of allocated identifiers starts at one"

以上是关于如何通过openGL或Glut检查窗口是不是打开的主要内容,如果未能解决你的问题,请参考以下文章

OpenGL及GLUT---------------函数整理

在 FLTK 中使用 GLUT [重复]

更新窗口显示 OpenGL/GLUT C++

opengl 的窗口处理程序

opengl如何实现鼠标场景漫游 视点随着鼠标的移动发生变化 刚刚接触opengl所以不大懂(不用glut的情况下)

窗口重叠后GLUT窗口不刷新