如何使用 OpenGL 画布在另一个程序内创建子窗口

How do I create a child window inside another program with an OpenGL canvas?

本文关键字:程序 创建 窗口 另一个 何使用 OpenGL      更新时间:2023-10-16

我正在第三方程序中开发一个C++插件,需要显示一个带有OpenGL的窗口。我想直接在 Win32 中编程(即不使用 MFC 或其他包装器)。

我下载了NeHes Win32教程,并在我的机器上成功编译并运行了它。

但是,这是一个主程序,它循环并调用PeekMessage,然后翻译消息和调度消息,如果没有任何消息,则重绘OpenGL。

我想"生成"一个Win32 OpenGL窗口,然后将控制权返回给第三方程序:

void DisplayOpenGLWindow_ButtonPressed() {
 CreateWindowEx(...);
 InitOpenGL(...);
 return;
}

但是如何获得新窗口来重绘 OpenGL 场景呢?我尝试在回调函数中添加一个调用以重绘 OpenGL:

case WM_PAINT:
{
   DrawGLScene();   
   return 0;
}

但这行不通;即使透明的颜色是黑色,窗户也是全白的。调整窗口大小和移动窗口无济于事。

答案会很大,所以我引导你去一些教程而不是:)

链接:

  • OpenGL MFC AppWizard
  • OpenGL Windows GUI Application - songho

Nehe主要使用Win32 api,因此请查找MFC教程/文章。

另一件事:尝试在现代 opengl 版本 3. 及更高版本上墨角。