MFC下OpenGL入门,计算机图形学作业.doc
上传人:sy****28 上传时间:2024-09-15 格式:DOC 页数:14 大小:351KB 金币:16 举报 版权申诉
预览加载中,请您耐心等待几秒...

MFC下OpenGL入门,计算机图形学作业.doc

MFC下OpenGL入门,计算机图形学作业.doc

预览

免费试读已结束,剩余 4 页请下载文档后查看

16 金币

下载此文档

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

MFC下OpenGL入门HYPERLINK"http://files.cnblogs.com/yanhuiw/mfcOpengl_start.rar"源文件1,建一工程文件,我这里命名为first,现在first工程里面我们没有添加任何东西,所有的东西都是MFC自动帮我们创建的。2,添加链接库。这一步很关键。打开菜单栏下的项目->属性->配置属性->链接器->输入->附加依赖项里加入OpenGL32.libGLu32.libGLaux.lib,如图3,加头文件,在stdafx里面添加opengl的头文件。如下代码所示:代码//-----------------------Tramp---添加OpenGL库头文件----------------------------->#include"stdio.h"#include"math.h"#include"gl\gl.h"#include"gl\glu.h"#include"gl\glaux.h"//---------------------------------------------------------------------------<4,CCY457OpenGLView类的属性栏,为下述消息加入消息处理函数:WM_CREATE(forOnCreate),WM_DESTROY(forOnDestroy),WM_SIZE(forOnSize),WM_ERASEBACKGROUND(forOnEraseBkground).如下图:5,设置窗口显示风格。窗口创建之前我们必须设置窗口风格包含WS_CLIPCHILDREN和WS_CLIPSIBLINGS,从而避免OpenGL绘制到其他窗口中去。这些应该放在PreCreateWindow()中。代码BOOLCfirstView::PreCreateWindow(CREATESTRUCT&cs){//TODO:在此处通过修改//CREATESTRUCTcs来修改窗口类或样式cs.style|=WS_CLIPSIBLINGS|WS_CLIPCHILDREN;//TrampreturnCView::PreCreateWindow(cs);}6,在CfirstView.h中加入如下语句:/************************************************************************//*设置的变量是RenderingContext(着色描述表)。每一个OpenGL都被连接到一个着色描述表上。着色描述表将所有的OpenGL调用命令连接到DeviceContext(设备描述表)上。我将OpenGL的着色描述表定义为hRC。要让您的程序能够绘制窗口的话,还需要创建一个设备描述表,也就是第二行的内容。Windows的设备描述表被定义为hDC。DC将窗口连接到GDI(GraphicsDeviceInterface图形设备接口)。而RC将OpenGL连接到DC*//************************************************************************/HGLRCm_hRC;//RenderingContext着色描述表CDC*m_pDC;//DeviceContext设备描述表BOOLInitializeOpenGL();//InitializeOpenGLBOOLSetupPixelFormat();//SetupthePixelFormatvoidRenderScene();//RendertheScene7,在OnCreate中我们将通过建立像素格式和绘制上下文来初始化OpenGL.在InitializeOpenGL()中会创建一个设备上下文(DC),为这个DC选择一个像素格式,创建和这个DC相关的绘制上下文(RC),然后选择这个RC.这个函数会调用SetupPixelFormat()来建立像素格式。intClesson1View::OnCreate(LPCREATESTRUCTlpCreateStruct){if(CView::OnCreate(lpCreateStruct)==-1)return-1;//TODO:在此添加您专用的创建代码InitializeOpenGL();//初始化openGL绘图return0;}//初始化opengl绘制BOOLCfirstView::InitializeOpenGL(){//GetaDCfortheClientAream_pDC=newCClientDC(this);//Fa