真是搞不懂这投影矩阵

在C++程序中准备好投影矩阵与变换矩阵, 然后再在顶点着色器中进行运算.

记录遇到的一些问题:

#1. Matrix4<float>::createFrustum vmath的这个函数, 直接使用的话, 是看不见东西的, 但它的算法与书上是一样的. 投影矩阵第三行第四列的值算出来会很大, 导致Z值会很大,然后看不见.

#2. 电脑屏幕是二维的, 所以算出来的坐标,可能是除以了Z值这个齐次坐标. 算出来的矢量中, 有时, 第四个值可能为0.

#3. 模型的顶点数据不能为负数. 一但有负数就看不见. 可能是像机位置的原因.

#4. createFrustum中的数值, 我的设置是 (Screen_Width, -Screen_Width, Screen_Width, -Screen_Width, -Screen_Width, Screen_Width / 2) 但第一个数值是[左] 应该是负数才对? 难道全反了?

#5. Z值的平移, 会在最终的算后, 在矢量的第四个值体现, 这么说来, 屏幕上的投影,矢量中的Z值与W值都有影响.

#6. glVertexAttribPointer它的第四个参数设置为GL_TRUE 开启归一化, 这一修改曾经解决了看不见东西的问题.

总的来说, 投影矩阵的学习 并不顺利

简单地显示模型

工程文件: VS2017的解决方案

猜你喜欢

转载自my.oschina.net/u/235558/blog/1826247