我试图了解如何使用 OpenGL 绘制对象。问题很简单,但我仍然无法在任何地方找到明确的答案(或者我完全愚蠢:))。让我描述一下这个问题。
1)我只是在屏幕上放了 2 个三角形。三角形的坐标(x,y,z,w)如下:
Triag1 = { {0, 0, -0.5, 1} , {1, 0, -0.5, 1}, {0, 1, -0.5, 1} } // a bigger one
Triag2 = { {0, 0, 0.5, 1} , {0.5, 0, 0.5, 1}, {0, 0.5, 0.5, 1} } // a smaller one
2)我没有使用也不查看,也没有投影变换
3)我将每个三角形的“默认”颜色作为顶点属性之一传递,并使用变量将它们简单地绕过到片段着色器。Triag1 为蓝色,Triag2 为红色
网络上的所有教程都说OpenGL使用右手坐标系并且Z轴指向“屏幕外”。因此,考虑到我的对象各自的 z 坐标,我希望在它后面看到一个较小的红色三角形和一个较大的蓝色三角形。怎么从来没有发生过。我只能看到一个大胖蓝色三角形。
如果我交换我的三角形各自的 z 坐标(Triag1 得到正 z 坐标,Triag2 得到负 z 坐标)我会看到我期望看到的。但。这意味着 Z 轴以某种方式指向屏幕,而不是在屏幕之外。
有经验的人可以解释一下我错过了什么基本方面吗?
PS 没有 GLUT,没有 GLM,没有调用设置各种 OpenGL 矩阵。仅“将顶点传递给 GPU - 启用着色器程序 - 绘制事物”