路遥见人心,日久知马力

博客园 首页 新随笔 联系 订阅 管理

在一个真实的建模过程中、可能一个模型的几个顶点有很大的数值坐标、

如(100,200,300)(200,300,100)。。。

但是、最后想显示在opengl的窗口内、就必须规范化到 x ,y ∈【-1,1】,z ∈【-1,1】上

但这个区间的点显示在屏幕上、还需要隐含的变化、也就是转换成【像素坐标】【像素坐标左上角是00,右下角是 winWidth,winHeight】、这一变换不是在 shader里算的,

而是 glViewPort() 自动进行的!所以我们不用去关心最后模型应该在屏幕的哪个地方!也就是说想显示个三角面片的话是针对NDC去定位,

而不是针对窗口用像素去定位!

opengl 最开始的教程里的三角形的顶点坐标都设置的很小、都处于 NDC 中、就是为了在没有任何变换矩阵的情况下、让模型能正常显示

其实后面引入了MVP矩阵变换、就可以指定任意大小的坐标了、会有矩阵的运算来进行这种坐标的映射。

learnOpenGL教程中的这段话值得深思:注意体会 have been 和 should(看英文其实理解东西更快、中文的翻译大多很别扭、让人抓不住重点)

 

 

posted on 2022-10-28 09:50  只讲大白话  阅读(1248)  评论(0编辑  收藏  举报