OpenGL中的顶点坐标如何从-1到1?有没有办法能够使用与屏幕相同的坐标指定顶点坐标?
所以而不是:
float triangleCoords[] = {
// X, Y, Z
-0.5f, -0.25f, 0,
0.5f, -0.25f, 0,
0.0f, 0.559016994f, 0
};
我可以
float triangleCoords[] = {
// X, Y, Z
80, 60, 0,
240, 60, 0,
0, 375, 0
};
我只需要拿出一个计算器就好了,所以我可以在一些顶点坐标中进行硬编码。这并不是说我会试图解决这个问题,并且想“是的,那应该是正确的(0,0.559016994),这看起来很完美......”
答案 0 :(得分:3)
这就是投影矩阵的用途。它们从坐标框架投影到标准化坐标。
如果需要,您可以自由设置像素的顶点,但是您只需将其与适当的投影矩阵配对即可告诉opengl如何将这些坐标转换为屏幕。
鉴于你的例子:
float triangleCoords[] = {
// X, Y, Z
80, 60, 0,
240, 60, 0,
0, 375, 0
};
如果将其与正投影矩阵配对(类似于glOrtho(0, width, 0, height, -1, 1)
生成的投影矩阵),那么您的三角形将在所描述的像素坐标处绘制。