资源描述:
《VC环境下基于OpenGL的编程》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、VC环境下基于OpenGL的编程2007-05-2220:51这篇文章介绍一下在VC环境中建立OpenGL标准的应用程序框架的具体方法与步骤:(1)创建项目文件:选择File
2、New菜单项,建立一个名为ProjectTemplate的项目文件,ProjectTemplate基于单文档(SDI),View类基于CView。(2)选择Project
3、Settings菜单项,在Link选项组的Object/librarymodules列表框中添加opengl32.libglu32.libglaux.li
4、b中间用空格隔开(3)选择View
5、ClassWizard菜单项,打开MFCClassWizard对话框,在Classname列表框中选择CProjectTemplateView类,进行一下操作: 选择WM_CREATE消息,单击AddFunction按钮添加OnCreate()函数,再单击EditCode按钮,将初始化代码添加到OnCreate()函数中: PIXELFORMATDESCRIPTORpfd={ sizeof(PIXELFORMATDESCRIPTOR), 1,
6、PFD_DRAW_TO_WINDOW
7、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};CClientDCdc(this);intpixelFormat=ChoosePixelFormat(dc.m_hDC,&pfd);BOOLsuccess=SetPixelFormat(dc.m_hDC,pixelForma
8、t,&pfd);m_hRC=wglCreateContext(dc.m_hDC); 同上,选择WM_DESTROY消息,在OnDestroy()中添加以下代码: wglDeleteContext(m_hRC); 在ProjectTemplateView.cpp中,将以下代码添加到PreCreateWindows()函数中: cs.style
9、=WS_CLIPCHILDREN
10、WS_CLIPSIBLINGS; OpenGL只对WS_CLIPCHILDREN
11、WS_CLIPSIBLI
12、NGS类型窗口有效; 在ProjectTemplateView.cpp中,将以下代码添加到OnDraw()函数中: wglMakeCurrent(pDC->m_hDC,m_hRC); DrawScene(); //用户自定义函数,用于绘制三维场景 wglMakeCurrent(pDC->m_hDC,NULL); 在ProjectTemplateView.cpp中,添加成员函数voidDrawScene();/*具体方法我就不用多说了吧,将树形窗口切换到ClassView,右键
13、单击CProjectTemplateView,选择AddMemberFunction*/(4)在ProjectTemplateView.h中包含以下头文件并添加类成员声明: #include #include #include在CProjectTemplateView类中的projected:段中添加成员变量声明: HGLRCm_hRC;这样,一个基于OpenGL标准的程序框架已经构造好了,你只需在DrawScene()函
14、数中添加程序代码即可实现你希望的功能了。:) 一、 前言 人生在于折腾,继续折腾吧。OpenGL编程的红宝书《OpenGLProgrammingGuide》在举例子的时候为了平台无关,使用的都是GLUT来管理窗口,个人感觉不爽-_-!要是针对Windows平台,个人倾向使用Win32(MFC也行),要是跨平台,我还会Qt嘛,Qt对OpenGL也有很好的支持的,为啥还折腾个新的窗口管理组件?虽然说GLUT比较简单,但是还是不喜欢扭曲的适应之,何况我去看了下GLUT这个东西,最新的版本都是2001
15、年发布的了,什么古董级的家伙啊,更加不想用了,还是在Windows平台上学习OpenGL吧。刚开始这样想的就这样做了,结果比我想象的稍微复杂一些,原来不光是熟悉Win32API就能随便搞掂的,当时还看到有人专门为此写了篇论文-_-!(不知道学历)吓到我了,没有那么高的学术研究价值吧?后来又看到3个研究生都开始为此写论文了(这还真是研究院中的人写的),感叹不已。 二、 提要 本文主要介绍Win32下的OpenGL编程需要的一些操作,以AndreLaMothe的T3DGameCo