OpenGL中的顶点坐标

时间:2012-03-15 22:27:15

标签: opengl-es coordinates vertex

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),这看起来很完美......”

1 个答案:

答案 0 :(得分:3)

这就是投影矩阵的用途。它们从坐标框架投影到标准化坐标。

如果需要,您可以自由设置像素的顶点,但是您只需将其与适当的投影矩阵配对即可告诉opengl如何将这些坐标转换为屏幕。

鉴于你的例子:

float triangleCoords[] = {
    // X, Y, Z
     80, 60, 0,
     240, 60, 0,
     0,  375, 0
}; 

如果将其与正投影矩阵配对(类似于glOrtho(0, width, 0, height, -1, 1)生成的投影矩阵),那么您的三角形将在所描述的像素坐标处绘制。