0

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

4

1 回答 1

3

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

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

鉴于你的例子:

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

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

于 2012-03-15T23:37:33.397 回答