OpenGL -- 变化和矩阵堆栈

2021-09-12  本文已影响0人  木扬音
image.png

视图变换

模型变换

用于操纵模型与其中某特定变换,通过旋转、缩放、平移将对象移动到指定位置

image.png

投影

矩阵堆栈

程序全局只有一个矩阵堆栈,但是需要绘制的图形有多种 即 变化有很多种--每个图形所需的变换矩阵不同,如果想两个图形的操作互不影响,需要一个矩阵状态去保存空白的状态

image.png

仿射变换

矩阵堆栈中有与平移、旋转、缩放三个模型变换相对应的放射变换,可以不用通过模型变换,而是直接通过矩阵堆栈的API实现这3种变换,如下表所示 image.png

角色帧

主要是用来表示物体及观察者所处的位置,主要有三个参数

//  vOrigin:当前所处的位置,默认是(0,0,0),处于原点
// vForward:即将要去的位置,默认是(0,0,-1),朝向-z轴方向
//  vUp:朝向哪,默认是(0,1,0),朝向+y轴方向
class GLFrame
    {
    protected:
        M3DVector3f vOrigin;    // Where am I?
        M3DVector3f vForward;   // Where am I going?
        M3DVector3f vUp;        // Which way is up?

除了矩阵,GLFrame对象也可以直接压入矩阵堆栈,主要涉及以下3个方法

上一篇下一篇

猜你喜欢

热点阅读