OpenGL ES+iOSでテクスチャを描画した

renderメソッドの中だけを変更します。
使用しているツールメソッドloadTextureとdrawTextureはこの本のソースコードのものです。
「OpenGLで作るiPhone SDKゲームプログラミング」
ソースコードはダウンロードできます。ここで掲載しません。
自分が勉強中に引っかかった部分だけを書き込みます。

効果図

スクリーンショット 2014-09-20 18.02.25

画面の準備

この部分はrenderの中に直接コピペで、背景色を編集しても大丈夫です。

[EAGLContext setCurrentContext:context];

glBindFramebufferOES(GL_FRAMEBUFFER_OES, defaultFramebuffer);
glViewport(0, 0, backingWidth, backingHeight);

glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glOrthof(-1.0f, 1.0f, -1.5f, 1.5f, 0.5f, -0.5f);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();

glClearColor(0.0f, 0.0f, 0.0f, 1.0f);
//背景を黒色に設定
glClear(GL_COLOR_BUFFER_BIT);

テクスチャ描画と透明処理

テクスチャの生成

loadTextureメソッドを使用し、テクスチャを生成
GLunitはOpenGLのマクロで定義されたタイプ。

GLuint trainTexture = loadTexture(@"train.png");

画像の準備

準備した画像はこれです。
trainTexture

    注意点は:

  • 画像のサイズは32×32、64×64のような、高さと長さも2の整数冪乗で、高さと長さもの同じでなければならない。
  • 画像のアルファチャネルを削除し、無背景の場合は、黒で塗りつぶし。
  • 画像処理のソフトはGIMPで、下の図の方法でアルファチャネルを削除。

スクリーンショット 2014-09-20 17.48.17
上記サイズ以外の画像を描画するなら、白いテクスチャだけがでます。(ここは知らなかった、)

テクスチャの描画

ここは本のdrawTextureメソッドをそのまま使用。

drawTexture(-0.5f, 0.0f, 2.5f, 2.5f, trainTexture, 255, 255, 255, 255);

テクスチャ黒背景の透明処理

描画しただけでは、黒背景が残されたので、アルファブレンドで透明処理をします。

glEnable(GL_BLEND);
glBlendFunc(GL_ONE, GL_ONE);

//drawTextureメソッドで描画

glDisable(GL_BLEND);

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です


*

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>