1 / 18
文档名称:

MFC+OpenGL 编程入门.doc

格式:doc   页数:18页
下载后只包含 1 个 DOC 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

MFC+OpenGL 编程入门.doc

上传人:tmm958758 2015/10/3 文件大小:0 KB

下载得到文件列表

MFC+OpenGL 编程入门.doc

文档介绍

文档介绍:标题: MFC+OpenGL 编程入门
发信人: qhchen (老道), 信区: VR_3D
发信站: BBS 水木清华站(Mon Aug 9 17:55:55 1999)


MFC+OpenGL 编程入门

1998-09-08
中国科技大学数学系计算专业老道
E-mail: qhchen@

OpenGL 作图非常方便,故日益流行,但对许多人来说,是在微机上
进行的,首先碰到的问题是,如何适应微机环境。这往往是最关键的一步,
虽然也是最初级的。
下面介绍如何在 VC++ 上进行 OpenGL 编程。其实相当简单明快,只
因国内缺少这方面的资料与例子,致使许多小细节要一个一个地试,耗去
大量时间。希望各位有什么心得体会,也公布出来,从而节省每个人都要
试试的时间。
言归正传,下面以画一条 Bezier 曲线为例,详细介绍VC++ 上 OpenGL
编程的方法。这里实际上也给出了个 C++ 良好封装性编程的范例。文中给
出了详细注释,以便给初学者明确的指引。一步一步地按所述去做,你将顺
利地画出第一个 OpenGL 平台上的图形来。(本文例子以VC++ 为背景)

一、产生程序框架

New Project | MFC Application Wizard (EXE) | "Test" | OK

*注* : 加“”者指要手工敲入的字串

二、导入 Bezier 曲线类的文件。用下面方法产生
两个文件:

WorkSpace | ClassView | Test Classes| <右击弹出> New Class
| Generic Class(不用MFC类) | "CBezierCurve" | OK

三、编辑好 Bezier 曲线类的定义与实现。写好下面两个文件:




四、设置编译环境:

1. 在 和 内各加上:
#include <GL/>
#include <GL/>
#include <GL/>
2. 在集成环境中,Project | Settings | Link | Object/library module
| " " | OK

五、设置 OpenGL 工作环境:(下面各个操作,均针对 )

1. 处理 PreCreateWindow(): 设置 OpenGL 绘图窗口的风格

|= WS_CLIPSIBLINGS | WS_CLIPCHILDREN | CS_OWNDC;

2. 处理 OnCreate():创建 OpenGL 的绘图设备。 OpenGL 绘图的机制
是: 先用 OpenGL 的绘图上下文 Rendering Context (简称为 RC )
把图画好,再把所绘结果通过 SwapBuffer() 函数传给 Window 的
绘图上下文 Device Context (简记为 DC).要注意的是,程序运行
过程中,可以有多个 DC,但只能有一个 RC。因此当一个 DC 画完图
后,要立即释放 RC,以便其它的 DC 也使用。在后面的代码中,将有
详细注释。

int CTestView::OnCreate(LPCREATESTRUCT lpCreateStruct)
{
if (CView::OnCreate(lpCreateStruct) == -1)
return -1;

Init();
return 0;
}

void CTestView::Init()
{
m_pDC = lientDC(this); //创建 DC

ASSERT(m_pDC != NULL);

if (!bSetupPixelFormat()) //设定绘图的位图格式,函数下面列出
return;

m_hRC = wglCreateContext(m_pDC->m_hDC);//创建 RC
wglMakeCurrent(m_pDC->m_hDC, m_hRC); //RC 与当前 DC 相关联
} //CCli