资源描述:
《opengl中文教程 opengl-3-视口和绘制函数》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、2、设置视口和重载你的绘制函数NeHeSDK是把Nehe的教程中所介绍的所有功能,以面向对象的形式,提供给编程人员快速开发的一套编程接口。在下面的教程中,我将按NeHeSDK源码的功能分类,一步一步把这套api介绍给大家。如果你觉得有更好的学习方法,或者有其他有益的建议,请联系我。zhouwei02@mails.tsinghua.edu.cn,zhouwei506@mails.gucas.ac.cn程序结构:我们在第一课程序的基础上添加一下功能:1.创建一个全局的视口类,控制场景中可见的范围2.创建初始化函数,用来完成绘制的初始化工作1.创建一个绘制三棱锥的函数2.设置默认的视口棱台体3.重栽
2、我们的绘制函数,这里将绘制一个简单的三棱锥为了使用视口类,我们需要包含下面的头文件(view.h),并声明一个全局的视口变量view。/*************************************新增的代码:包含视口类的声明********************/#include"view.h"//包含视口类的声明/**********************************新增的代码:包含视口类的声明:结束******************//*************************************新增的代码:创建View类************
3、****************/Viewview;//创建视口类/**********************************新增的代码:创建View类:结束**************************/接着创建一个新的cpp文件,用来重栽我们的绘制函数。这里我把它命名为Draw.cpp为了使用OpenGL类和View类,我们需要包含头文件opengl.h和view.h。为了方便起见,我们启用NeHe名字空间。接着我们使用extern关键字来使用全局变量view,最后我们创建一个变量initialize来记录是否需要初始化。整个代码如下:#include"opengl.h"/
4、/包含创建OpenGL程序的框架类#include"view.h"//包含视口类的声明#pragmacomment(lib,"NeheSDK.lib")//包含NeheSDK.lib库usingnamespaceNeHe;//使用NeHe名字空间externViewview;//使用全局变量view类staticboolinitialize=true;//记录是否初始化2、设置初始化函数这里我创建一个空的初始化函数,以方便以后的使用/******************************************************初始化场景**********************
5、*****************************************************/voidIniScene(OpenGL*gl,ControlData*cont){}/****************************************************初始化场景:结束************************************************************************/3、创建一个绘制三棱锥的函数我们使用标准的OpenGL代码创建这个函数/**********************************
6、********************绘制三棱锥***************************************************************************///绘制三棱锥voidDrawTri(void){glBegin(GL_TRIANGLES);glColor3f(1.0f,0.0f,0.0f);glVertex3f(0.0f,1.0f,0.0f);glColor3f(0.0f,1.0f,0.0f);glVertex3f(-1.0f,-1.0f,1.0f);glColor3f(0.0f,0.0f,1.0f);glVertex3f(1.0f,-1
7、.0f,1.0f);glColor3f(1.0f,0.0f,0.0f);glVertex3f(0.0f,1.0f,0.0f);glColor3f(0.0f,0.0f,1.0f);glVertex3f(1.0f,-1.0f,1.0f);glColor3f(0.0f,1.0f,0.0f);glVertex3f(1.0f,-1.0f,-1.0f);glColor3f(1.0f,0.0f,0.0f);gl