当前位置: 首页 > 知识库问答 >
问题:

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

伍溪叠
2023-03-14

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

在常规窗口中使用打开GL (Win32)

但我真的不知道他们是如何在一个窗口内创建一个面板,并获得了它的DC。。

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

我试着使用glScissor和清除缓冲区,但这只是用黑色填充整个屏幕,而我指定的部分是透明的颜色..

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

共有2个答案

傅兴平
2023-03-14

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

姚星河
2023-03-14

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

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

之后,您得到了您创建的面板的<code>HWND

 类似资料:
  • 我写了一个< code>OpenGL代码用于在屏幕上渲染图像。我使用< code>GLUT来创建一个窗口和回调,但是我想在< code>win32窗口中而不是在< code>GLUT中呈现图像,基本上我们有一个< code > CreateWindowEx() API来在< code>win32中创建窗口,并且我们有一个< code>HWND(句柄),以便我们可以将此句柄传递给< code>HDC

  • 我已经阅读了关于这个棘手(利基)主题的所有现有问题,但我被卡住了。我有一个带有OpenGL上下文的Win32窗口。我希望我的窗口是部分透明的。 到目前为止,我的结果是整个窗口都是透明的。我只希望黑色区域是透明的,这样我可以绘制一些3D对象,它们看起来就像是从窗口出来的。 首先,在我的窗口类中,我将hbrbackground设置为黑色。 我已经使用WS_EX_LAYERED标志创建了我的窗口。 在我

  • 我正在尝试学习windows上的opengl编程,虽然我最初是从SDL开始的,但我已经决定放弃它,以便学习如何使用WGL自己启动OpenGL上下文。 我使用nanovg作为一个快速的图形绘制库,用SDL渲染一切都很好,但是,现在我已经移除了SDL,创建了我自己的窗口和OpenGL上下文,我发现窗口的标题栏与渲染区域重叠了。好像渲染区域的原点(0,0)在整个窗口的左上方,而不是标题栏的正下方,如果这

  • 我正在寻找一些关于渲染子窗口的信息,特别是关于OpenGL如何与GDI互操作的信息。我的问题是,我基本上有两个窗口,首先,主窗口是在qt中创建的,而在qt内部,子窗口是利用OpenGL渲染器托管的。 现在我想做的是在我的OpenGL窗口顶部托管一个覆盖,所以我用它来覆盖OpenGL窗口。我遇到的问题是,当我使用OpenGL渲染时,OpenGL生成的图形似乎模糊了图形区域,包括并有效地撤消了由qt合

  • 我正在通过glfw3库学习OpenGL,我正在使用imgui制作一个有趣的应用程序。 我想做一个小引擎或CAD工具。 问题是我不能在imgui窗口中呈现我想要的。 我搜索了谷歌,找到了以下链接: https://gamedev.stackexchange.com/questions/150214/render-in-a-imgui-window https://gamedev.stackexcha

  • 我正在努力熟悉Java的LWJGL库,我一直在线学习一些教程,我似乎无法渲染模型。 我使用的是OpenGL 2.1(这似乎非常过时,但我不知道如何更新它,我知道它与你的硬件捆绑在一起,如果有人对我的规格感兴趣,我使用的是MacBook Pro 2017型号) 如果有人能看看我的代码,告诉我哪里做错了,我会非常感激!(现在呈现的只是一个红色窗口) 从我研究过的来源来看,这段代码应该会产生一个由两个三