読者です 読者をやめる 読者になる 読者になる

ひっきぃのメモ帳

趣味で作るプラモデル製作の過程と作品、日々の資格取得へ向けての活動、Apple中心のIT関連ネタを書いています。

iPhoneではじめる OpenGL ES プログラミング

引き続きのiPhoneプログラミングの勉強です。
今日は先日の東京出張のついでに買ってきたこの本

iPhoneではじめるOpenGL ESプログラミング

iPhoneではじめるOpenGL ESプログラミング

まだ第2章ぐらいまで試していませんが。
OpenGLのうち、3Dグラフィックスにターゲットを絞った本ですね。
例によって、ES1でのプログラミングを基本にしています。SDKも3ベースですね。


ということは、またSDK4用に書き換えないと進められないです。
もう、どこを変更すれば動き出すのかはわかってますので、サクサクと進めます。

念のため変更点
EAGLView.h の中に以下を追加

GLuint depthRenderbuffer;


EAGLView.m の createFramebuffer の中に以下を追加

GLint backing_width,backing_height;
glGetRenderbufferParameteriv( GL_RENDERBUFFER, GL_RENDERBUFFER_WIDTH, &backing_width );
glGetRenderbufferParameteriv( GL_RENDERBUFFER, GL_RENDERBUFFER_HEIGHT, &backing_height );
glGenRenderbuffers(1, &depthRenderbuffer);
glBindRenderbuffer(GL_RENDERBUFFER, depthRenderbuffer);
glRenderbufferStorage(GL_RENDERBUFFER, GL_DEPTH_COMPONENT16, backing_width, backing_height);
glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, GL_RENDERBUFFER, depthRenderbuffer);

glRenderbufferStorageの部分は、本には載っていないのですが、これが無いと表示されませんでした。


EAGLView.m の deleteFramebuffer の中に以下を追加

if(depthRenderbuffer) {
  glDeleteRenderbuffers(1, &depthRenderbuffer);
  depthRenderbuffer = 0;
}

あとは ◯◯ViewControl.m の drawFrame の中を変更していけばOKです。


ところでこの本の内容ですが、3Dのオブジェクトの移動や回転を順に試しながら解説されています。私としては、最初の部分の説明がちょっとまどろっこしいかなぁという印象でした。3Dグラフィックスを全くやったことがない人には必要かな。その後の、太陽と地球と月の自転と公転の動きを実装しながら、どのように回転と移動を適用すると良いかを学べるところはよかったなと思います。


ちょっと困ったのは、唐突に glu.h と glu.c を組み込みましょうという話が出てくるのですが、サポートページからサンプルプロジェクトをダウンロードすると、このファイルもあるようです。視点の設定なんかができるユーティリティ関数が用意されています。内容は書籍には無い(まだ全部読んでないのですが)ので、ダウンロードしてから始めましょう。

主に3Dグラフィックスの部分の書き方しか載っていませんので、これ1冊でゲーム作りというわけにはいかないでしょう。
何かつくり始められるようになってから、3Dオブジェクトを追加したくなったら読めば良い感じですね。



よろしければ、ボタン↓押してくださいませ。
にほんブログ村 携帯ブログ iPhoneへ
にほんブログ村
人気ブログランキングへ