OpenGL 空间、投影、视角

Space、Projection、View

程序运行效果

程序运行效果
空间

空间 Space ?

在电脑中,空间就是某种坐标系!
Space = Coordinate

公式:

Vclip = Mprojection ⋅ Mview ⋅ Mmodel ⋅ Vlocal

V: Vector、 M: Matrix、local: Vertex
反方向(右到左)看过来:
local代表本地的顶点数据---->
---->经由Model Matrix转换得到---->
---->[World Space世界空间] ?坐标系的转换!---->

而得到的世界空间的坐标系我们---->
---->经由View Matrix转换得到---->
---->[View Space观察空间] ? (可以是Camera摄像机) ---->

而得到的观察空间坐标系我们---->
---->经由Projection Matrix转换得到---->
---->[Clip Space剪裁空间] ? (空间很大,但屏幕有限,so…) ---->

---->经由Viewport Transform视口变换 ---->
----> [Screen Space显示器屏幕(2D)]
Transform Flow
(学习OpenGL或者Direct3D,我们可以先不要关注线性代数、离散数学等内容,可以先将流程与代码搞清楚就好…)
dont ask why,first how to do!

shader 代码:

#version xxx xxx
layout (location = n) in vec3 vert;

uniform mat4 model;
uniform mat4 view;
uniform mat4 projection;

void main()
{
   
	gl_Position = projection * view * model * vec4(vert, 1.0f);
}

注意:矩阵以及向量相乘的这个顺序不能改变!

投影、视角

代码:

// projection投影矩阵:角度(45度) 视野FOV(Field of View)、宽高比、NearPlane近平面、FarPlane远平面
glm::mat4 proj = glm::mat4(1.0f); 
proj = glm::perspective(glm::radians(45.0f), (float
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值