理想未来ってなんやねん

娘可愛い。お父さん頑張る。

iPhone 3Dプログラミングメモ

iPhone用の3D CG表示プログラムを書いてみて、分かった事をメモしておきます。

  • iPhoneでは3Gや第2世代までiPod touchのようにOpenGL ES 1.1が使える機種と、3GS以降や第3世代iPod touchのように2.0が使える機種がある。
  • OpenGL ES 1.1と2.0は全く別物。全く異なるプログラムになってしまうので、1.1だけを使うか、1.1と2.0で別々に書くか、1.1をバッサリ切り捨てて2.0だけで書くかのいずれかになる。
  • OpenGL入門はOpenGL ES入門に役に立たない。なぜなら多くの入門書に書かれているglBegin/glEndがOpenGL ESでは使えない。
    • OpenGLの知識が役に立たない訳ではない。入門が入門にならないという意味。
    • 使わない機能はバッサリ切り捨てられています。GL_QUAD_STRIPとかGL_QUADSもない。四角形や多角形は三角形を組み合わせて描画する。
    • まずはiPhone SDKOpenGL ES Applicationのコードを眺めた方が良い。
      • iPhone SDK 2.0〜3.0(未確認)と、3.1のコードは違うっぽい。OpenGL ES 1.1の場合は前者の方が分かりやすい。SDK 3.1のサンプルコードにはUSE_DEPTH_BUFFERとか無いよ。
  • OpenGL ES 2.0からプログラマブルパイプライン、バーテックスシェーダ、フラグメントシェーダ(ピクセルシェーダ)が使えるようになっている。
  • PlayStation 3をターゲットにOpenGL ES 2.0の仕様が策定されたと言ってもよいぐらい関係が深かったっぽい。
  • モデリングするのであればBlenderを使うと安上がり。
    • Wavefront Obj形式だと、サンプルのローダが存在する。
      • glmReadOBJ、glm.c、glm.hあたりがキーワード。