我想要实现的是这样的——也就是说,一个标准窗口中包含的 OpenGL 视图,以及一些按钮、菜单等。
但是,我正在尝试使用非托管 C++ 和 WinAPI 来完成该(项目要求),并且如果可能的话,(免费)GLUT。
但是,在我看来,使用 GLUT 唯一可行的方法就是创建一个单独的窗口。我是对的,还是实际上有办法将窗口句柄传递给 GLUT 进行渲染?还是我完全偏离了轨道?
是的,据我所知,GLUT 只能让你做完整的窗口,不会让你画成任意矩形。有许多关于在 Windows 中使用 Win32 和 WGL API 设置渲染上下文的教程。设置好上下文后,您可以像使用 GLUT 一样有效地执行所有操作,但使用适当的 WGL 函数来交换缓冲区。
这是所涉及内容的高级概述,尽管它确实是大量文本并且与 MFC 相关,但它概述了整个过程。您应该能够查找适当的 WGL API 参考来实现这一点。
老实说,如果您已经决定使用 Win32 API,那么使用 GLUT 确实没有意义,它会尝试对您隐藏所有内容,包括您需要处理对话框初始化和按钮事件的消息泵。如果您的要求不限于 Win32 API,我会建议一些更便携的东西,例如 Qt,用于对话框友好并支持 OpenGL 的框架。