在C++程序中准备好投影矩阵与变换矩阵, 而后再在顶点着色器中进行运算.算法
记录遇到的一些问题:函数
#1. Matrix4<float>::createFrustum vmath的这个函数, 直接使用的话, 是看不见东西的, 但它的算法与书上是同样的. 投影矩阵第三行第四列的值算出来会很大, 致使Z值会很大,而后看不见.学习
#2. 电脑屏幕是二维的, 因此算出来的坐标,多是除以了Z值这个齐次坐标. 算出来的矢量中, 有时, 第四个值可能为0.get
#3. 模型的顶点数据不能为负数. 一但有负数就看不见. 多是像机位置的缘由.it
#4. createFrustum中的数值, 个人设置是 (Screen_Width, -Screen_Width, Screen_Width, -Screen_Width, -Screen_Width, Screen_Width / 2) 但第一个数值是[左] 应该是负数才对? 难道全反了?rust
#5. Z值的平移, 会在最终的算后, 在矢量的第四个值体现, 这么说来, 屏幕上的投影,矢量中的Z值与W值都有影响.float
#6. glVertexAttribPointer它的第四个参数设置为GL_TRUE 开启归一化, 这一修改曾经解决了看不见东西的问题.程序
总的来讲, 投影矩阵的学习 并不顺利im