iPhone 3Dプログラミングメモ
iPhone用の3D CG表示プログラムを書いてみて、分かった事をメモしておきます。
- iPhoneでは3Gや第2世代までiPod touchのようにOpenGL ES 1.1が使える機種と、3GS以降や第3世代iPod touchのように2.0が使える機種がある。
- 第3世代iPod touchでも8GBはOpenGL ES 1.1しか使えない。
- 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 SDKのOpenGL 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あたりがキーワード。
- Wavefront Obj形式だと、サンプルのローダが存在する。