2010-12-11 19 views
1

私は最近、OpenGLの学習に飽き飽きしましたが、これまでのところかなり直感的でしたが、これは固執しています。 OpenGLが現在使用しているものの代わりにピクセルベースの座標系を使用するように設定を変更するにはどうすればよいですか?たとえば、このコードは、10x20ピクセルについての四角形を描画します:OpenGL for Cocoaの座標系をピクセルに設定する

glBegin(GL_QUADS); { 
    glVertex3f(player.x, player.y, 0); 
    glVertex3f(player.x+10.0, player.y, 0); 
    glVertex3f(player.x+10.0, player.y+20.0, 0); 
    glVertex3f(player.x, player.y+20.0, 0); 
} 

基本的に同じことを生成します:?このコードは、そのよう

glBegin(GL_QUADS); { 
    glVertex3f(player.x, player.y, 0); 
    glVertex3f(player.x+0.05, player.y, 0); 
    glVertex3f(player.x+0.05, player.y+0.1, 0); 
    glVertex3f(player.x, player.y+0.1, 0); 
} 

は、どのように私はそれを作ることができますかありがとう。

EDIT:誰かがglOrtho()をどこかで使うことを提案していましたが、その方法に関する情報は何も教えてくれませんでした。これはうまくいくのでしょうか?あれば、どうすればいいのですか?

答えて

2

ごめんなさい。それがiPadのSafariがあなたの入力を捨ててしまうことが判明した。

前提条件:iPhoneの質問にタグ付けしたので、あなたはココアタッチについて話していることになります(左上の原点、y軸の正の値が下がっている)。同様に、あなたはおそらく、ピクセルではなく、ポイントを望んでいるでしょう - 網膜上にあるかどうかに関わらず、320x480のスクリーンがスクリーン上にあります。

glOrthoはまさにあなたが望むものです。http://www.khronos.org/opengles/documentation/opengles1_0/html/glOrtho.htmlのマニュアルページを参照してください。だから、あなたはおそらくあなたの投影スタックにこれをしたいと思うでしょう:

glOrthof(0,320,480,0,1000);

そして、モデルビューに一度これを行う:

glTranslatef(0、0、-500)

そしてz成分なしで将来のすべてのジオメトリを提出します。

これは、画面の左端がx = 0、右がx = 320、上端がy = 0であり、底部はy = 480である。近くのクリッププレーンを1の距離に、遠くの距離を1000に置くのは、どこかにある必要があるためです。しかし、それは2つの間の半分(大丈夫、全く正確ではない)に変換するので、z座標をもう送信しないと、すべてのジオメトリが表示され、yまたはxの周りの回転に余裕ができますそれらを欲しい。

警告:glVertexコールは、OpenGL ESの一部ではないため、iOSでは使用できません。最近のOpenGLでは廃止予定です。短いバージョンは、彼らが本当に効率が悪く、ドライバーがすぐに対処するのが難しいということです。 glVertexPointerは、Cの配列の配列を渡して使用するものです。

+0

完全に作業しました。ありがとう! – Jumhyn

関連する問題