我有一个常规的Win32窗口,我只想使用OpenGL渲染该窗口的一部分,我发现了这个问题:
Using OpenGL in a regular window (Win32)
但是我真的不知道他们如何在窗口内创建面板并为其获取DC。
基本上我想要一个使用win32绘制按钮,列表和更多内容的窗口,并且在同一窗口的某些指定部分中渲染opengl内容。
我尝试使用glScissor并清除缓冲区,但这只是用黑色填充了整个屏幕,而我用透明颜色指定了该部分。
我也尝试使用glViewport,但这没做任何事情。
答案 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上下文)