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 に答える