CGLEnabledView - 支持 OpenGL 的 MDI 视图类






4.77/5 (24投票s)
1999年12月1日
2分钟阅读

234332

9577
提供 OpenGL 支持的插件视图类
它是什么
CGEnabledView 是一个视图类,旨在封装所有 OpenGL 相关内容(初始化、管理渲染上下文和调色板、销毁等),从而允许在 MDI 应用程序中创建多个视图。
CGEnabledView 还提供以下基本服务:
- 一个函数,用于获取有关当前使用的 OpenGL 实现的各种信息(OPENGL 和 GLU 库的单独信息)。
- 在内部管理显示列表的创建,并提供一个原始接口用于执行显示列表。
- 定义要在视图内使用的鼠标光标。
- 提供面向对象封装的四边形对象,用于绘制球体、圆柱体和圆盘。
- 提供面向对象封装的 glu tessellator 例程,用于将非简单多边形(凹形、自相交和带孔的多边形)转换为简单的多边形组(三角形条和扇形)。
- 提供一个简单的接口,用于将文本字符串绘制为 2D 位图或完整的 3D 字形。
用途
本文使用了配套文章 虚拟摇杆旋转控制器 中介绍的摇杆代码。
要开始试验 OpenGL 绘图,只需执行以下步骤:
- 使用 AppWizard 生成一个 MDI 项目。
- 在
[YourProject]View.cpp
和[YourProject]View.h
中用CGLEnabledView
替换 CView。 - 使用 ClassWizard 删除
OnDraw
和PreCreateWindow
函数(也删除函数体)。 - 如果需要请求特定的颜色缓冲区深度、深度缓冲区深度和双缓冲模式组合,请重写
VideoMode
函数。 - 如果需要执行一些初始化,请重写
OnCreateGL
。 - 重写
OnDrawGL
函数并发出一些 GL 调用。 - 在构建项目之前,请记住链接 OpenGL 库(有关说明,请参阅
GLEnabledView.cpp
的顶部)。
由于不建议混合 Windows GDI 和 OpenGL 绘图命令,因此一些 WM 处理程序被设为私有,请使用可重写的虚拟函数代替。
其他详细信息在演示代码中(应该有很好的注释),可以用作良好的起点。
演示
在示例项目中,您可以打开多个视图,每个视图都呈现一个示例场景,并使用鼠标交互式地旋转它们。可以通过“帮助/查看 OGL 信息”菜单项获取有关 OpenGL 实现的一些信息。请查看“关于”对话框以获取一些快捷键。
此演示项目演示了虚拟摇杆控制器的使用,该控制器允许您旋转场景,就像您正在操作叠加在应用程序子窗口上的虚拟球体一样。