OpenGL上下文和设备上下文如何工作?

时间:2009-05-18 15:59:31

标签: windows user-interface opengl drawing openglcontext

我是U / I编程的新手,我正在尝试使用OpenGL。当我运行一个用GLUT创建一个新的OpenGL窗口的示例程序时,它工作正常。好。但是,在另一个程序的上下文中,我必须响应Draw事件(在Windows上),传递给我的设备上下文 - 以及我可能没有GLUT可用的地方 - 我的困惑是:

  1. 何时创建并销毁设备上下文?我可以绘制给我的任何设备上下文,或者只有其中一些(我怎么知道)?

  2. 我是否必须创建自己的OpenGL上下文并使用它来绘制,或者我可以使用“当前”的OpenGL上下文?每次发送抽奖活动时是否必须重新创建上下文?

  3. 基本上我的问题是,在我发送“Draw”事件的情况下,我多久尝试创建一次OpenGL上下文,这与设备上下文的创建/销毁周期有什么关系?

1 个答案:

答案 0 :(得分:7)

通常,将单个OpenGL上下文视为窗口通常是安全的,尤其是在Windows上。

设备上下文将(通常)映射到窗口句柄(HWND)。它实际上是一个DC(HDC是句柄),但通常你将一个HDC与一个HWND相关联。在Windows中,您将根据要在其上渲染的屏幕上的窗口创建一个要使用的窗口。

通常,您将为应用程序的整个运行时重用此设备上下文。如果要渲染到不同的窗口,则需要为新窗口句柄生成设备上下文(HDC)。此外,屏幕外渲染也有所不同,因为您也可以为其创建兼容的设备上下文。

关于你的问题:

1)当您创建要进行渲染的窗口时,您将获取设备上下文,并在该窗口的生命周期内使用它。

2)您需要始终使用为渲染窗口创建的设备上下文。

相关问题