openggl画图初学必看.docx

openggl画图初学必看.docx

ID:59253728

大小:14.09 KB

页数:8页

时间:2020-09-08

openggl画图初学必看.docx_第1页
openggl画图初学必看.docx_第2页
openggl画图初学必看.docx_第3页
openggl画图初学必看.docx_第4页
openggl画图初学必看.docx_第5页
资源描述:

《openggl画图初学必看.docx》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、OpenGL作图非常方便,故日益流行,但对许多人来说,是在微机上进行的,首先碰到的问题是,如何适应微机环境。这往往是最关键的一步,虽然也是最初级的。一般的,我不建议使用glut包.那样难以充分发挥Windows的界面上的功能.下面介绍如何在VC++上进行OpenGL编程。OpenGL绘图的一般过程可以看作这样的,先用OpenGL语句在OpenGL的绘图环境RenderContext(RC)中画好图,然后再通过一个Swapbuffer的过程把图传给操作系统的绘图环境DeviceContext(DC)中,实实在在地画出到屏幕上.下面以画一条Bezier曲线为例,详细介绍VC++上OpenGL编

2、程的方法。文中给出了详细注释,以便给初学者明确的指引。一步一步地按所述去做,你将顺利地画出第一个OpenGL平台上的图形来。一、产生程序框架Test.dswNewProject

3、MFCApplicationWizard(EXE)

4、"Test"

5、OK*注*:加“”者指要手工敲入的字串二、导入Bezier曲线类的文件用下面方法产生BezierCurve.hBezierCurve.cpp两个文件:WorkSpace

6、ClassView

7、TestClasses

8、<右击弹出>NewClass

9、GenericClass(不用MFC类)

10、"CBezierCurve"

11、OK三、编辑好Bezier曲线类的定

12、义与实现写好下面两个文件:BezierCurve.hBezierCurve.cpp四、设置编译环境:1.在BezierCurve.h和TestView.h内各加上:#include#include#include2.在集成环境中Project

13、Settings

14、Link

15、Object/librarymodule

16、"opengl32.libglu32.libglaux.lib"

17、OK五、设置OpenGL工作环境:(下面各个操作,均针对TestView.cpp)1.处理PreCreateWindow():设置OpenGL绘图窗口的风

18、格cs.style

19、=WS_CLIPSIBLINGS

20、WS_CLIPCHILDREN

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

22、ATESTRUCTlpCreateStruct){if(CView::OnCreate(lpCreateStruct)==-1)return-1;myInitOpenGL();return0;}voidCTestView::myInitOpenGL(){m_pDC=newCClientDC(this);//创建DCASSERT(m_pDC!=NULL);if(!mySetupPixelFormat())//设定绘图的位图格式,函数下面列出return;m_hRC=wglCreateContext(m_pDC->m_hDC);//创建RCwglMakeCurrent(m_pDC->m_hDC

23、,m_hRC);//RC与当前DC相关联}//CClient*m_pDC;HGLRCm_hRC;是CTestView的成员变量BOOLCTestView::mySetupPixelFormat(){//我们暂时不管格式的具体内容是什么,以后熟悉了再改变格式staticPIXELFORMATDESCRIPTORpfd={sizeof(PIXELFORMATDESCRIPTOR),//sizeofthispfd1,//versionnumberPFD_DRAW_TO_WINDOW

24、//supportwindowPFD_SUPPORT_OPENGL

25、//supportOpenGLPFD_DOUB

26、LEBUFFER,//doublebufferedPFD_TYPE_RGBA,//RGBAtype24,//24-bitcolordepth0,0,0,0,0,0,//colorbitsignored0,//noalphabuffer0,//shiftbitignored0,//noaccumulationbuffer0,0,0,0,//accumbitsignored32,//32-bitz-buffer0,//nos

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。