AppNext Press 

アンドロイドアプリ開発をしているAppNextによるAndroidアプリ開発・リリース情報をお届けします。 ツイッターもやっています。ぜひフォローしてください♪ 【@AppNextJP】

スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

PageTop

OpenGLでのアルファ・ブレンディングについて

 またもや開発メモ。今回のテーマは「Open GLのアルファ・ブレンディングについて」です。

絶対爆発させんなよ?~爆弾で運試し~』(通常版はこちら!/ソーシャル版はコチラ!)を制作していたときのこと。

このゲームアプリは『OpenGLで作るAndroid SDKゲームプログラミング』を参考にして作りました。


OpenGLで作る Android SDKゲームプログラミングOpenGLで作る Android SDKゲームプログラミング
(2011/04/07)
中島 安彦、横江 宗太 他

商品詳細を見る



 で、いざ画面描画をプログラミングしていたときのこと。この本では画像の背景色を消すには「加算合成」(glBlendFunc(GL_SRC_ALPHA,GL_ONE);)でイケると書いてあるのですがなぜかダメでした(上手くブレンドされず背景色が消えるどころか、背景色が別の色で表示されてしまう)。そこでいろいろなアルファ・ブレンディングの組み合わせを試してみること小一時間(といっても5~6時間くらいやっていた気が・・・w)。ようやく原因がわかったんです。

上記の本で使用されているテクスチャ(ハエたたきゲームのハエの画像)の背景色は黒。で、自分が使用していた画像(爆弾のテクスチャやテキストのテクスチャですね、はい)には背景色がついていなかったんです←おいおいw

つまりは単なる凡ミスだったわけですねw

そこで再度、背景色をつけたテクスチャを作成するのは面倒だったので、なんとか背景色なしのテクスチャをうまくアルファ・ブレンディングして描画できないかと試行錯誤していたわけです。

上記の本以外にも、オライリーから出ている『初めてのOPENGL ES』で調べたりネットで調べたりしてたんですが、上手くいかない・・・。←すっごい焦ってましたよ、当時はw


初めてのOpenGL ES初めてのOpenGL ES
(2011/07/21)
山下 武志

商品詳細を見る


で、ようやく上手くいったアルファ・ブレンディングの組み合わせがこれ↓


glBlendFunc(GL_SRC_ALPHA, GL_MINUS_SRC_ALPHA);


でした。

もう一度言っておきますが、①描画させるテクスチャに背景色をつけていない、②全体の描画領域はglClearColor(0.0f,0.0f,0.0f,1.0f);で塗りつぶしている、③②を行ったうえで全体の背景画像を描画、という手順で処理した場合に上記のアルファ・ブレンディングの組み合わせで上手くいきました。(②については他の色で塗りつぶした場合を試していないので、もしかしたら別の色で描画領域全体を塗りつぶした場合でも上手くいくかもしれません)。


『初めてのOPENGL ES』の著者の方も仰っていますが、アルファ・ブレンディングは「習うより慣れろ」だと思います。いろいろな組み合わせを試してベストな描画を見つけていくことが大事なんだなーと実感したわけですね、はい。


でも、テクスチャを自分で作って、それを自分でプログラミングしてっていう作業は思ったより大変でした。テキストが直接描画できればスッッッッッゴク楽なんですがOpenGLにはそれができない。なのでテキストを表示するのにもいちいち画像を準備しなくちゃいけない。気に入らなかったらまた画像の作り直し・・・ホント泣けてくるよーw


でも収穫の多い経験ができたので結果的に良かった、良かった。


そんな感じでいろいろと苦労した(「そんな大した苦労でもないだろ?」とか言わないでーw)Androidゲームアプリ『絶対に爆発させんなよ?~爆弾で運試し~』は通常版ソーシャル版ともに好評公開中です。よかったら遊んでみてください。



↓ツイッターにてつぶやき中!よろしければフォローお願いします。

Twitterボタン
Twitterブログパーツ
スポンサーサイト

PageTop

コメント


管理者にだけ表示を許可する
 

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。