卜若的代码笔记-webgl系列-第十六章:glsl探索(四)$探索二中的gl_Position$

1 随着探索的深入,我们逐渐的不可避免的需要去逛网站了...不过在此之前,我们还是回顾一下渲染过程里面的坐标变换吧...

这张图很典型了:

 

举个例子 

现在,我输入一组顶点到glsl中,这组顶点是组成了一个Cube

但是,这个Cube应该显示在哪个地方呢?

所以,[Cube]*[x,y,z,w]'这个过程就叫做模型变换

model transform

然后就是摄像机开始捕获里面的东西了,假设,摄像机是一个没有边界的视锥体

假设它的视域是无限大的,那么投影到的这个区域就是 投影域,对应的矩阵叫做投影矩阵,而

[Model]*[World]->变换到投影域的过程叫做

viewing transform(projection transform:投影变换)

但是,我们的视线是有限的,所以需要裁减,这个过程叫做

clip transform(perpective division:透视分割)

最后,注意,我们的webgl的坐标系是x:[-1,1]y:[-1,1]的

也就是说还需要将坐标归一化,而这个过程叫做

viewport transform:视口变换

 

2 gl_Position

在投影变换之后,输出的是gl_Position,也就是说你最终画在屏幕里面的哪个位置,这个位置就是gl_Position...so,我们来看一下上一部分在

VertexShader里面的代码

应对于这个代码,我们得先知道position是啥,从直觉上讲,我们认为它就是

世界坐标

ps:至少到目前位置我并没有找到position这个vec3的引用,我初步怀疑它是VertexShader里面内置的一个位置特性,或者是属于three.js的,目前我们就把它当做是世界坐标。

 

接下来modelViewMatrix,目前没有太好的指导教材证明modelViewMatrix是属于Three.js的模型矩阵,什么意思呢:

modelViewMatrix表述当你创建一个Cube时,这个Cube的所有顶点会组成一个矩阵叫做modelViewMatrix。但是不清楚的事情是

modelViewMatrix是属于Three.js的还是原生的webgl的shader提供的矩阵API。

但其实并不重要。

mvPosition表示这个Cube的世界投影。

projectionMatrix表示投影矩阵,这是非常重要的概念

projectionMatrix*mvProjection表示变换到投影矩阵。

这个就是gl_Position,然后输出,现在gl_Position就表示一些列在投影屏上的没有上色的点,注意,它就是一群点,我需要去使用gl_line,gl_triangle(划线或者画三角形)这些命令去给这个点去绘制对应的线,面,体,其实这很简单,也不是很重要。

以上就是gl_Position的相关比较基础的概念(在下的极限了...下一章里我们介绍gl_FragColor)

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值