2

我是 U/I 编程的新手,我正在尝试开始使用 OpenGL。当我运行一个使用 GLUT 创建新 OpenGL 窗口的示例程序时,它运行良好。好的。但是,在另一个程序的上下文中,我必须响应 Draw 事件(在 Windows 上),并将设备上下文传递给我——而且我可能没有可用的 GLUT——我的困惑是:

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

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

基本上我的问题是,在我收到“Draw”事件的情况下,我多久尝试一次创建 OpenGL 上下文以及这与设备上下文的创建/销毁周期有何关系?

4

1 回答 1

7

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

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

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

至于你的问题:

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

2)您将希望始终使用为您正在渲染的窗口创建的设备上下文。

于 2009-05-18T16:08:59.603 回答