2017-09-02 10 views
0

私はOpenGLを学んでいますが、私は頂点データの位置を設定するのはちょっと混乱しています。例えばOpenGLでオブジェクトの単位を設定するには

、 私は理解して、私は1つのOpenGLのユニット= 1ミリメートルを想定することができ、その後、私はこのような頂点データセット、矩形サイズ300ミリメートルX 300ミリメートルを描きたい:だから

data = [-0.5, 0.5, # top left 
     -0.5, -0.5, # bottom left 
     0.5, 0.5, # top right 
     0.5, -0.5] # bottom right  

を長方形のサイズは1 OpenGL単位または1mm(私が間違っていない場合)であり、モデル行列を使用して300倍に拡大します。

それとも私はこのようにそれを設定できます

data = [ 0.0, 300.0, # top left 
     0.0, 0.0, # bottom left 
     300.0, 300.0, # top right 
     300.0, 0.0] # bottom right 

矩形サイズは300 OpenGLの単位または300ミリメートルになります。

どのアプローチが正しいのかわかりません。

あなたは男の右方向に私を指すしてくださいでした。

ありがとう

答えて

1

OpenGL座標には「単位」がありません。

2X2X2ボックス(または2X2X1)の原点を中心にノーマライズされたデバイス座標(NDC)で、フラグメントがラスタライズされて終了した場合、ウィンドウ座標にマップされ、フレームバッファに書き込まれるフラグメントです(深度テストに合格したと仮定して)。そこで断片を得るためにあなたがするのはあなた次第です。私はあなたの正投影行列をチェックし、その場合には、正投影、話している理解して、あなたの質問から

、それは「スクリーン・エッジ」の座標を定義します。したがって、頂点座標の実際の長さの単位は、投影と物理的な画面サイズの関数です。

私は強く、頂点からの簡単な方法の変換について読んでお勧めは、画面位置に座標が起こります。例えば。 http://www.songho.ca/opengl/gl_transform.html、若干時代遅れですが、アイデアは非常にうまくカバーしています。
http://www.songho.ca/opengl/gl_projectionmatrix.htmlもチェックしてください。具体的には正射投影についてのセクションをご覧ください。それはあなたの選択の下、左、右と上の座標と正射影投影行列を構築する方法をあなたに考えを与える必要があります。

関連する問題