手把手教你搭建用MFC进行OpenGL编程的框架
来源:百度文库 编辑:神马文学网 时间:2024/03/29 19:37:24
第一步:创建项目文件
File || New || Project || MFC AppWizard (exe) || 输入Project Name || 创建一个基于SDI,View类基于CView
的工程文件;
第二步:向项目文件中添加OpenGL的绘图函数
Project || Settings || 在Object/library modules:中输入opengl32.lib,glu32.lib,glaux.lib,三者之间用空
格隔开,逗号不用输入;
第三步:添加一些代码
1)在项目工作区的FileView中找到StdAfx.h,添加下面的代码:
#include
#include
#include
2)在项目工作区的ClassView中找到CView类,右击CView类,选择Add Member Vairable,添加一个成员
变量HGLRC m_hRC;选择Add Member Founction,添加一个成员函数void DrawScene();
3)在项目工作区的ClassView中找到CView类,右击CView类,选择Add Windows Message Handler,为
CView类添加WM_CREATE,WM_DESTORY(方法:在左边的New windows message/events中选中并
双击,然后点击OK)。
在项目工作区的ClassView中找到CView类,找到函数OnCreate(),在该函数中添加如下代码:
//定义像素存储格式
PIXELFORMATDESCRIPTOR pfd=
{
sizeof(PIXELFORMATDESCRIPTOR),
1,
PFD_DRAW_TO_WINDOW|PFD_SUPPORT_OPENGL,PFD_TYPE_RGBA,
24,
0,0,0,0,0,0,
0,0,0,0,0,0,0,
32,
0,0,
PFD_MAIN_PLANE,
0,
0,0,0,
};
CClientDC dc(this);
int pixelFormat=ChoosePixelFormat(dc.m_hDC,&pfd);
BOOL success=SetPixelFormat(dc.m_hDC,pixelFormat,&pfd);
m_hRC=wglCreateContext(dc.m_hDC);
同理找到函数OnDestory(),在该函数中添加下面的代码:
wglDeleteContext(m_hRC);
4)在类CView中的函数PreCreateWindows()中添加下面的代码:
cs.style|=(WS_CLIPSIBLINGS|WS_CLIPCHILDREN);
5)在类CView中的函数OnDraw()中添加下面的代码:
wglMakeCurrent(pDC->m_hDC,m_hRC);
DrawScene();//用户自定义的场景绘制函数
wglMakeCurrent(pDC->m_hDC,NULL);
这样,一个基于OpenGl标准的程序框架已经构造好了,用户只需在DrawScene()函数中添加程序代码即可。
为了验证程序框架的是否正确,请在DrawScene()函数中添加下面的代码:
glBegin(GL_TRIANGLE_STRIP);
glColor3f(1.0,0.0,0.0);
glVertex3f(0.0,0.0,0.0);
glColor3f(0.0,1.0,0.0);
glVertex3f(-0.5,0.0,0.0);
glColor3f(0.0,0.0,1.0);
glVertex3f(0.0,0.5,0.0);
glEnd();
glFlush();
然后编译执行直至在MFC窗口中绘制出了一个顶点颜色不同的三角形即可。
File || New || Project || MFC AppWizard (exe) || 输入Project Name || 创建一个基于SDI,View类基于CView
的工程文件;
第二步:向项目文件中添加OpenGL的绘图函数
Project || Settings || 在Object/library modules:中输入opengl32.lib,glu32.lib,glaux.lib,三者之间用空
格隔开,逗号不用输入;
第三步:添加一些代码
1)在项目工作区的FileView中找到StdAfx.h,添加下面的代码:
#include
#include
#include
2)在项目工作区的ClassView中找到CView类,右击CView类,选择Add Member Vairable,添加一个成员
变量HGLRC m_hRC;选择Add Member Founction,添加一个成员函数void DrawScene();
3)在项目工作区的ClassView中找到CView类,右击CView类,选择Add Windows Message Handler,为
CView类添加WM_CREATE,WM_DESTORY(方法:在左边的New windows message/events中选中并
双击,然后点击OK)。
在项目工作区的ClassView中找到CView类,找到函数OnCreate(),在该函数中添加如下代码:
//定义像素存储格式
PIXELFORMATDESCRIPTOR pfd=
{
sizeof(PIXELFORMATDESCRIPTOR),
1,
PFD_DRAW_TO_WINDOW|PFD_SUPPORT_OPENGL,PFD_TYPE_RGBA,
24,
0,0,0,0,0,0,
0,0,0,0,0,0,0,
32,
0,0,
PFD_MAIN_PLANE,
0,
0,0,0,
};
CClientDC dc(this);
int pixelFormat=ChoosePixelFormat(dc.m_hDC,&pfd);
BOOL success=SetPixelFormat(dc.m_hDC,pixelFormat,&pfd);
m_hRC=wglCreateContext(dc.m_hDC);
同理找到函数OnDestory(),在该函数中添加下面的代码:
wglDeleteContext(m_hRC);
4)在类CView中的函数PreCreateWindows()中添加下面的代码:
cs.style|=(WS_CLIPSIBLINGS|WS_CLIPCHILDREN);
5)在类CView中的函数OnDraw()中添加下面的代码:
wglMakeCurrent(pDC->m_hDC,m_hRC);
DrawScene();//用户自定义的场景绘制函数
wglMakeCurrent(pDC->m_hDC,NULL);
这样,一个基于OpenGl标准的程序框架已经构造好了,用户只需在DrawScene()函数中添加程序代码即可。
为了验证程序框架的是否正确,请在DrawScene()函数中添加下面的代码:
glBegin(GL_TRIANGLE_STRIP);
glColor3f(1.0,0.0,0.0);
glVertex3f(0.0,0.0,0.0);
glColor3f(0.0,1.0,0.0);
glVertex3f(-0.5,0.0,0.0);
glColor3f(0.0,0.0,1.0);
glVertex3f(0.0,0.5,0.0);
glEnd();
glFlush();
然后编译执行直至在MFC窗口中绘制出了一个顶点颜色不同的三角形即可。
手把手教你搭建用MFC进行OpenGL编程的框架
基于MFC下的OpenGL框架
《基于MFC的OpenGL编程》Part 10 Texture Mapping
《基于MFC的OpenGL编程》Part 9 Lighting
《基于MFC的OpenGL编程》Part 1 A Primer
《基于MFC的OpenGL编程》Part 2 Setting up OpenGL on Windows
OpenGL的安装 - OpenGL
基于VC++的OpenGL编程讲座之概述
基于VC++的OpenGL编程讲座之坐标变换
基于VC++的OpenGL编程讲座之概述
基于VC++的OpenGL编程讲座之基本图元
VC下配置OPENGL框架
手把手教你禁止端口 编程爱好者BLOG
MFC ODBC 编程
搭建QTP初步框架
MFC 对话框编程要点 - lesky的专栏 - CSDNBlog
JavaScript框架编程
js frame 框架编程
理解MFC文档/视图框架fdfasdfds
InfoQ: 用Qi4j进行面向组合编程
用MFC创建个性的对
手把手教你:软陶人偶的制作教程
手把手教你:烟花的拍摄技巧!!
手把手的教你美甲