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

ひっきぃのメモ帳

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

iOS SDK4.2でOpenGLの深度バッファを実装

しばらくこのブログも更新されていませんでしたが、この勉強をしていました。
ここに至るまで試行錯誤してたので。

例によってこの本で勉強です。

OpenGLで作るiPhone SDKゲームプログラミング

OpenGLで作るiPhone SDKゲームプログラミング

ここに至るまでもそれなりに苦労はしていたのですが、もうどこを変更したか覚えてません。

今はレースゲームの3D化のサンプルにとりかかっています、ポイントになりそうなのは、深度バッファを有効にするところ。
サンプルプログラムでは ES1Renderer.m に追加することになっています。

SDK4.2ではそのファイルは無いので、EAGLView.m を変更することにします。
その前に、 EAGLView.h の宣言に深度バッファ用の変数を追加

GLuint defaultFramebuffer, colorRenderbuffer, depthRenderbuffer;

EAGLView.m の createFramebuffer にサンプルの手順を追加します。

GLint backing_width,backing_height;
glGetRenderbufferParameterivOES( GL_RENDERBUFFER_OES, GL_RENDERBUFFER_WIDTH_OES, &backing_width );
glGetRenderbufferParameterivOES( GL_RENDERBUFFER_OES, GL_RENDERBUFFER_HEIGHT_OES, &backing_height );
glGenRenderbuffersOES(1, &depthRenderbuffer);
glBindRenderbufferOES(GL_RENDERBUFFER_OES, depthRenderbuffer);
glRenderbufferStorageOES(GL_RENDERBUFFER_OES, GL_DEPTH_COMPONENT16_OES, backing_width, backing_height);
glFramebufferRenderbufferOES(GL_FRAMEBUFFER_OES, GL_DEPTH_ATTACHMENT_OES, GL_RENDERBUFFER_OES, depthRenderbuffer);

backing_widthとbacking_height が定義されていなかったので、赤字部分は補いました。
これで、深度バッファの作成ができそうです。

その他は、順調にこの本を読み替えながら記述していけば問題なさそうです。

ただし、ビューのサイズが変更されたときに深度バッファのサイズも変更するコードもサンプルにはありましたが、どこに記述してよいものか不明だったので記述しませんでした。ビューのサイズは変わらなそうだし、無視しても良いのかも。

深度バッファの解放は、
EAGLView.m の dealloc に書けば良いですね。

これでこの本の内容もだいたい確認できた感じです。
まだ、実機動作を試せる環境が無いので、シミュレータ上だけで遊んでます。
早いところ実機動作確認できる環境を作って、次のステップに進まなくては。



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