使用OpenGL渲染到Win32窗口的一部分

时间:2019-02-21 14:48:12

标签: c++ winapi opengl

我有一个常规的Win32窗口,我只想使用OpenGL渲染该窗口的一部分,我发现了这个问题:

Using OpenGL in a regular window (Win32)

但是我真的不知道他们如何在窗口内创建面板并为其获取DC。

基本上我想要一个使用win32绘制按钮,列表和更多内容的窗口,并且在同一窗口的某些指定部分中渲染opengl内容。

我尝试使用glScissor并清除缓冲区,但这只是用黑色填充了整个屏幕,而我用透明颜色指定了该部分。

我也尝试使用glViewport,但这没做任何事情。

2 个答案:

答案 0 :(得分:0)

您需要创建一个WinForms面板控件(假设您正在使用WinForms?),然后调用GetDC(panel.Handle),并将面板的Handle属性作为参数传递。这将为您提供DC来创建OpenGL上下文。

答案 1 :(得分:0)

我最终创建了一个新的小部件,如下所示:

HWND OpenglHWND = CreateWindowW(L"Static", L"",
                  WS_CHILD | WS_VISIBLE | WS_BORDER,
                  200, 10, 300, 300, ParentWindowHandle, 0, 0, NULL);

在那之后,您获得了所创建面板的HWND,从这里像往常一样初始化OpenGL,但是,在创建上下文时,请使用之前获得的HWND的DC! (基本上将GetDC(OpenGLHWND)用于OpenGL上下文)