Nanashi-softプログラマ専用iOSでOpenGL ES 2.0プログラミング


◇iOSでOpenGL ES 2.0プログラミング -2.0専用にする-

生成したプロジェクトは,2.0で動作しているのか?
ドキュメントを見ると,EAGLContextを生成する際に,
EAGLContext* myContext = [[EAGLContext alloc] initWithAPI:kEAGLRenderingAPIOpenGLES2];
を書いたときに,OpenGL ES 2.0になると書かれています

その記述は,testappViewController.mに書かれていました
どうやら,2.0で生成しようと試みて,ダメだったら 1.1で生成するようになっています
1.1には対応しませんので,コメントアウトしてしまいます
//if (!aContext) {
//	aContext = EAGLContext* myContext = [[EAGLContext alloc] initWithAPI:kEAGLRenderingAPIOpenGLES1];
//}
2.0と 1.1は互換性がありませんので,ソース上で何らかの識別をして両方書いているだろう。と予想できます
描画の際にシェーダーを使うかどうか? を切り替えている部分を見るのが一番分かりやすいでしょう
描画時に両方で必ず使用する命令,glClearを探すとすぐに見つかりました
if ([context API] == kEAGLRenderingAPIOpenGLES2) {
	//2.0の場合
} else {
	//1.1の場合
}
Objective Cの変な記述キタ~(*'-')
他の環境と互換性がなくなるので,おもむろにこのif文を全部外します

ソースを見て,重要なポイントを洗い出します
・awakeFromNibに初期化処理を書く
・drawFrameに描画処理を書く
・頂点シェーダーは,Shader.vshに書く
・フラグメントシェーダーは,Shader.fshに書く

この辺りがわかれば,OpenGL ES 2.0の書き方は Androidでやった時と同じはずなので,すぐに移植できるはず(*'-')


TOPプログラマ 専用iOSでOpenGL ES 2.0プログラミング

Melonbooks DL