c++ - 为 GLUT 创建自定义窗口?

标签 c++ window glut

有没有一种方法可以为 GLUT 创建/指定自定义窗口而不是使用 glutCreateWindow 方法?我想修改窗口的某些元素,例如删除边框,可能圆角等。

似乎没有任何内置函数可以将某个 HWND 句柄设置为目标 GLUT 窗口(在 Windows 上)。

有什么想法吗?
詹格勒

最佳答案

Glut 和构建 Glut 的 OpenGL 旨在跨平台。每个平台对窗口的构成都有自己的想法。为了解决这个问题,OpenGL 有自己的窗口概念或渲染上下文。呈现上下文是呈现 DIB(设备独立位图)的内存块,通常不包括窗口装饰(边框、X、窗口图标等)。除非有我不知道的特定于平台的扩展,否则无法将特定于 Windows 的 HWND 传递给 Glut。

您可以在其他地方创建渲染上下文,例如在您自己的代码中或在另一个库中。一旦创建,可能会有一种方法将此上下文或指向上下文的指针传递给 Glut。这支持 OpenGL,许多基于它构建的库也是如此。

我不确定您为什么要更改窗口装饰,如果情况允许,使用 native 支持此功能的库可能更容易,而不是将 Glut 装配到解决方案中。我知道 SDL,Ogre3d 控制窗口装饰的能力有限(我不认为它们都可以绕过角落),如果你真的想使用 Glut,可以让这些库中的任何一个给你一个指针他们使用的 OpenGL 渲染上下文。我没有使用过 QT,但我知道它可以更轻松地访问您想要的控件类型,并且能够为您创建 OpenGL 上下文。

但是,在查看了位于 http://www.opengl.org/documentation/specs/glut/spec3/spec3.html 的 Glut 文档之后它不使用“上下文”一词。这可能意味着如果您使用 Glut,您将只能使用它提供的窗口装饰工具。这可能意味着您要么放弃过剩并使用功能更多的库,要么满足于操作系统提供的窗口装饰。

关于c++ - 为 GLUT 创建自定义窗口?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4643473/

相关文章:

c++ - Qt C++ - 在 QSplashScreen 中对齐 QProgressBar

linux - 以编程方式将击键发送到 GLUT 应用程序

windows - 使用 GLUT 和 MinGW 的 undefined reference

c - 添加 3D 模型时纹理映射消失

C++ 将字符串解析为不同的数据类型变量

c++ - 从元组中获取元素

c++ - 函数没有返回正确的结果

flash - AS3 : get browser window size?

javascript 为具有给定 URL 的 Java 小程序仅启动一个窗口

javascript - 如何使用 Crossrider appAPI.openURL 以 "Maximized"模式在窗口中打开 URL?