为GLUT创建自定义窗口?

时间:2011-01-10 03:30:54

标签: c++ window glut

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

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

任何想法?
Jengerer

1 个答案:

答案 0 :(得分:2)

Glut和基于Glut的OpenGL旨在成为跨平台。每个平台都有自己的想法,关于什么是窗口。要解决这个问题,OpenGL有自己的窗口概念或渲染上下文。渲染上下文是一块内存,其中呈现DIB(设备无关位图),其通常不包括窗口装饰(边框,X,窗口图标等......)。除非有平台特定的扩展,我不知道没有办法通过Glut HWND,这是特定于Windows。

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

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

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