2016-10-17 10 views
0

私は現代のOpenGLでは、変形行列を使用しないで、一連の2次元形状(Rectangle、Circle)などをレンダリングしようとしています。私はそのような2つの三角形の長方形と言うの座標を指定できるようにするために私が希望:最新のOpenGLとの2次元形状座標

float V[] = { 20.0, 20.0, 0.0, 
       40.0, 20.0, 0.0, 
       40.0, 40.0, 0.0, 
       40.0, 40.0, 0.0, 
       20.0, 40.0, 0.0, 
       20.0, 20.0, 0.0 } 

あなたは頂点座標をビューポートに指定されていることを見ることができますか?スペース(私はそれが何を信じていると信じています)。さて、これは、OpenGLによってレンダリングされるとき、それはクリップのスペースが中心に原点を持つ-1.0から1.0になるので動作しません。

これを処理する正しい方法は何ですか?私は当初、glClipControlを左上に調整し、0〜1が機能すると思っていましたが、それはできませんでした。クリップコントロールを左上に、0〜1に設定すると、原点はまだ中央にありましたが、下方向に移動するにつれてY軸が増加することができました(開始点です)。

理想的には、0.0.0.0を左上、1.0,1.0を右下にするのが理想的ですが、次に各頂点の位置を正規化しますが、OpenGLを取得する方法はわかりませんそのタイプの座標系を使用します。

+0

私はあなたが直交する視点をしたいと思います。 – CoffeeandCode

+0

OpenGLを自分のやり方で打ち負かす方法はありませんか? – user1435899

+0

なぜ、行列を避けたいのですか? – CoffeeandCode

答えて

0

一つは、簡単に、頂点シェーダで行列なしに、これらの変換を行うことができます。

// From pixels to 0-1 
vPos.xy /= vResolution.xy; 

// Flip Y so that 0 is top 
vPos.y = (1.-vPos.y); 

// Map to NDC -1,+1 
vPos.xy = vPos.xy*2.-1.; 
+0

それはありがとう! – user1435899

関連する問題