(4)应用投影和相机视口

在OpenGL ES环境中,投影和相机视口使你绘制的对象以更接近物理对象的样子呈现,这是通过精确的数学坐标变换实现的。

  • 投影-这种变换跟据所在GLSurfaceView的宽和高调整对象的坐标。如果没有此变换,对象会被不规则的视口扭曲。投射变换一般只需要在OpenGLview创建或发生变化时调用,代码写在renderer的onSurfaceChanged()方法中。
  • 相机视口-此变换基于一个虚拟相机的位置调整对象的坐标。注意OpenGLES并没有定义一个真的相机对象,而是提供了一些工具方法变换绘制对象的显示来模拟一个相机。一个相机视口的变换可能只在创建GLSurfaceView时调用,或跟据用户动作动态调用。

一、OpenGL 理论基础—-变换

(1)投影变换:

投影变换的目的是定义一个视景体。视景体有两种用途。首先,视景体决定了一个物体是如何映射到屏幕上的(即通过透视投影还是正投影)。其次,视景体定义了哪些物体(物体的一部分)被裁剪到最终的图像之外。
1.透视投影
这里写图片描述
透视投影最显著的特征就是透视缩短,物体距离照相机越远,它在最终图像中看上去越小。
在OpenGL中,glFrustum()函数定义了一个平截头体,
void glFrustum(GLdouble left,GLdouble right,GLdouble bottom,GLdouble top,GLdouble near,GLdouble far);
创建一个表示透视视图平截头体的矩阵,并把它与当前矩阵相乘。平截头体的视景体是由这个函数的参数定义的:
(left,bottom,-near)和(right,top,-near)分别制定了近侧裁剪平面左上角和右下角的(x,y,z)坐标。near和far分别表示
从观察点到近侧和远侧裁剪平面的距离,它们的值应该是正的。
同时,也可以用gluPerspective()定义一个平截头体,
void gluPerspective(GLdouble fovy,GLdouble aspect,GLdouble near,GLdouble far);
创建一个表示透视视图平截头体的矩阵,并把它与当前矩阵相乘。fo

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值