OpenGL实战教程(6) -- 第五站:模型变换和视图变换

***有关矩阵运行和透视原理,参考相关的数学知识。

1、glMatrixMode函数:

void glMatrixMode (GLenum mode)
mode取值:
GL_PROJECTION 投影,
GL_MODELVIEW 模型视图,
GL_TEXTURE 纹理
(1)使用GL_MODELVIEW 参数:
表示切换到模型操作方式。
调用函数glLoadIdentity()加载单位矩阵,
然后就可以调用:
平移函数:glTranslate*
旋转函数:glRotate*
缩放:glScale*
或者使用gluLookAt函数达相同的效果:
void gluLookAt (
eyex, eyey, eyez, // 观察者的位置(或者说相机的位置)
centerx, centery, centerz, // 观察的中心点
upx, upy, upz); // 观察者的方向(可以理解为物体的轴向)

在这里插入图片描述

void Step5_LookAt(void)
{
	glClearColor(0, 0, 0, 0);
	glClear(GL_COLOR_BUFFER_BIT);
	glMatrixMode(GL_MODELVIEW);
	glLoadIdentity();  //加载单位矩阵   
	glColor3f(1, 1, 1.0); //画笔白色  
	gluLookAt(
		     0, 0, 1,		// (exeX,exeY,exeZ):观察者的位置(或者说相机的位置) 
			 0.0, 0.0, 0.0, // (centerX,centerY,centerZ):观察的中心点
		     0.0, 1.0, 0.0  // (upX,upY,upZ):观察者的方向(可以理解为物体的轴向)
		     );
	glutWireTeapot(1);
	glFlush();
	return;
}

(2)使用GL_PROJECTION参数:
表示切换到模型操作方式。
然后调用函数glLoadIdentity()加载单位矩阵。
就可以调用gluPerspective函数作透视处理。

void gluPerspective (
GLdouble fovy, // 透视角:是眼睛上下睁开的幅度,角度值,值越小,视野范围越狭小(眯眼),值越大视野范围越宽阔
GLdouble aspect, // 宽与高比,影响到视野的截面有多大
GLdouble zNear, // 视野透视深度:近裁剪面到眼睛的距离
GLdouble zFar);//视野透视深度:远裁剪面到眼睛的距离
如果Fovy的值无限接近180,则什么也看不到。
在这里插入图片描述

void Step5_Perspective(void)
{
	glClearColor(0, 0, 0, 0);
	glClear(GL_COLOR_BUFFER_BIT);
	glMatrixMode(GL_PROJECTION);
	glLoadIdentity();  //加载单位矩阵   
	glColor3f(1, 1, 1.0); 

	  // 设置透视图
	gluPerspective(
		45,		//  fovy :透视角设置为 45 度,在Y方向上以角度为单位的视野
		1,		//  aspect: 窗口的宽与高比
		1.0f,	// zNear:视野透视深度:近点1.0f
		1000.0f  // zFar:视野透视深度:始点0.1f远点1000.0f
		);
	glBegin(GL_LINES);
		glVertex3f(-1.0f, 0.0f, -1.0f); //绘制第一条线段
		glVertex3f(1.0f, 0.0f, -1.0f);
		glVertex3f(-1.0f, 1.0f, -5.0f); //绘制第二条线段
		glVertex3f(1.0f, 1.0f, -5.0f);
	glEnd();

	glFlush(); 
	return;
}

运行效果:
在这里插入图片描述(3)使用GL_TEXTURE参数:
在纹理使用中再作说明。

2、第五站源码下载

编译在Debug – x86模式下完成。

下载源码。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值