我有两个带绳子的三角形:
static float squareCoords[] = {
// red triangle
0.0f, 0.0f, 0.5f,
0.25f, 0.5f, 0.5f,
0.5f, 0.0f, 0.5f,
//black triangle
-0.1f, -0.1f, 0.1f,
0.15f, 0.4f, 0.1f,
0.4f, -0.1f, 0.1f,
};
绘图顺序:
private short drawOrder[] = {
0, 2, 1,
3, 5, 4,
};
然后我用glDrawElements绘制它,黑色三角形总是在红色前面。更改Z坐标没有结果。好像它吸引了第二个黑色tringle,这就是为什么它总是在前面。帮助我理解发生了什么以及问题出在哪里。
答案 0 :(得分:2)
也许您没有通过glEnable(GL_DEPTH_TEST)
启用深度测试?
或者,可以设置投影矩阵,使得Z坐标在转换为标准化设备坐标期间被“挤压”在一起。检查您的近处和远处飞机是什么,并可能将远处的飞机拉近或飞近。