基于MFC对话框的OpenGL三维图形开发
来源:互联网 发布:大数据介绍 编辑:程序博客网 时间:2024/09/21 08:57
以三维动态球体模型来讲述基于MFC对话框的OpenGL编程
1.基本思想
在Windows98/NT平台下,GDI是原始窗口的图形接口。而GDI实现这些是通过一个设备描述表DC来实现的。现在通过OpenGL绘图需要创建绘图描述表RC。但是RC并不能直接完成绘图,只能与特定的DC联系起来,从而完成具体的绘图工作。最后要注意释放RC和DC。
现在以Windows2000为例,首先将glu.dll,glu32.dll,glut.dll,glut32.dll,opengl32.dll文件拷贝到操作系统WINNT/System32目录下,将gl.h,glaux.h,glu.h,glut.h拷贝到Microsoft Visual Studio/VC98/Include/GL目录中中,将glaux.lib,glu32.lib,glut32.lib,opengl32.lib拷贝到Microsoft Visual Studio/VC98/Lib目录中;然后在编译程序的时候选择Project|Setting菜单,在Link标签中的Object/library modules编辑框中输入“opengl32.lib, glut32.lib ,glu32.lib,glaux.lib”。到这时候环境就建立好了,可以进行下面的具体编程工作。
本实例采用基于对话框的工程。至于用单文档方式和多文档方式其编程原理是一样的,这里不再作单独介绍。
2.1创建项目文件。选择File|New菜单项,新建一个基于对话框的项目文件MyDlgOpenGL;
2.2 修改对话框模板。删除对话框中的静态文本,调整控件的位置。
2.3 创建新类,添加消息映射。选择View|ClassWizard菜单项,打开MFC对话框,在Add Class之中选择New,以便添加一个新类COpenGL,且该类的基类选择generic CWnd;最后利用MFC ClassWizard为COpenGL类添加消息WM_CREATE,WM_PAINT的映射。
2.4 添加代码。
int COpenGL::MySetPixelFormat(HDC hdc)
{
}
现在就可以在OnCreate函数中创建绘图描述表。其代码如下:
int COpenGL::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
}
在OpenGL.h中定义函数LightShine函数,作为添加光源和材质属性的函数。在该函数中将创建两个光源,并使其位于不同位置,以产生不同的效果。定义:环境光,散射光,镜面光和镜面反射指数。因为没有一种光源完全由以上三种中的一种光源组成,所以任何一种光源都是由以上三种光源的光照成分组成的,即为混合光源。其成分值由RGBA定义。用材料对光的三原色的反射率来定义材料的颜色,与光源相对应,。代码如下:
void COpenGL::LightShine(void)
{
glEnable(GL_DEPTH_TEST);
//计算定点法线
glEnable(GL_AUTO_NORMAL);
glEnable(GL_NORMALIZE);
}
2.4.3 定义绘图窗口
CRect rect(7, 7, 300, 300);
2.4.4 绘制图象
void COpenGL::OnPaint()
{
}
2.4.5 结束运行
在结束运行时,我们必须将一些环境变量释放。于是应该在添加的类COpenGL的析构函数中进行操作,以释放DC和删除RC。代码如下:
COpenGL::~COpenGL()
{
wglDeleteContext(hglrc);
}
结语
利用Visual C++强大的窗口功能完成了OpenGL绘制球体的程序的编制工作,上述程序运行正常,其结果是一个动态的球体。理解了上述编程过程,就可以使我们自如地运用MFC进行其他的OpenGL编程。
- 基于MFC对话框的OpenGL三维图形开发
- 基于MFC对话框的OpenGL三维图形开发
- 基于MFC对话框的OpenGL类
- 基于MFC对话框的OpenGL类
- 基于MFC 对话框的OPENGL学习
- 基于OpenGL三维软件开发
- 直接在MFC的对话框上利用OpenGL绘制图形
- 基于MFC的对话框Dialog的OpenGL程序框架
- 制作一个基于MFC对话框的OpenGL类
- 制作一个基于MFC对话框的OpenGL类
- 制作一个基于MFC对话框的OpenGL类
- 制作一个基于MFC对话框的OpenGL类
- MFC基于对话框的用Picture Control显示OpenGL
- OpenGL: 基于OpenGL的三维机器人仿真
- OpenGL三维图形开发库 及 工具下载
- OpenGL三维图形开发库 及 工具下载
- 基于OpenGL的三维地形可视化研究
- 基于OpenGL和OpenCV的三维显示
- OpenGL读取3DS文件示例(C++语言编写
- 制作一个基于MFC对话框的OpenGL类
- 制作一个基于MFC对话框的OpenGL类
- Mysql千万级别数据优化方案
- MFC对话框的OpenGL类实例之二
- 基于MFC对话框的OpenGL三维图形开发
- GLUT 工具箱函数
- C#Winform设置时不调用
- opengl学习(五)一个机械臂程序,有关模型转换
- 下载外文文献的一点心得(知网免费账号,亲测可用)
- OpenGL实现3DS文件导入
- Spring MVC学习笔记(1)
- 读取3DS文件
- 谁说C语言很简单?