2013年9月26日木曜日

やっぱり3Dは避けて通れなかった

映像的な面でのモチベーションとして,色々なデザインモチーフやVFX的効果を取り入れて動きを出し,画面いっぱいを使って楽しさを演出したいというイメージをもって進めています.

プログラマブルシェーダ使いたさ故にイキナリOpenGL ES 2.0で作り始めてるのは,そんな自分の中のイメージを楽に具現化できる機能というか可能性を感じるからで,全くGPUプログラミングの経験がない自分でも楽に試作を重ねられるGLSL Sandboxは大いに活用させてもらってます.

2013年9月17日火曜日

演算負荷を意識しはじめる

背景のエフェクトは解像度や各種演算精度をダイエットして負荷を節約することとしても、肝心のゲーム部分でも光の散乱や逆光とかパーティクルといったエフェクトを多用するイメージでいるため、なにやら早くもハードウェアリソースを最大限活用する必要がありそう。

CPUさんにはlibpdの動作のほうをがんばってもらう必要があるので、グラフィックについてはGPU/ソフトウェア処理を問わず、しっかり60fps出るように速度をチューニングできる余裕(=自分の知識、理解)を作っておきたい。

そうなってくると、動作テストのリファレンススペックのようなものを想定しておかないといけない気がします。

2013年9月16日月曜日

libGDXでOpenGL ES 2.0でシェーダ動いた

やればやるほど出口の見えなかったOpenGLでのグラフィック実装ですが,
libGDXを使いはじめてようやく軌道に乗ってきました.

libGDXはJavaベースでOpenGL ESを使ったゲームを作るライブラリですが,
マルチプラットフォームで開発できるので,PC上でもOpenGL ES 2.0で
テストができて超ラクチン.今までテスト環境に困ってたのは何だったんだ.

libGDXは,工程はラップせずに手段をラップする感じのフレームワーク.
ですので自由度がかなり高いと思われる一方,私のような初心者が触るには
敷居のほうも正直高い.
日本語のドキュメントはあんまりないので,主に海外のサイトを見て回って
使い方を覚える感じです.

OpenGLの使い方と並行して,キャラクターの書き込みプロセスや
状態遷移に関するメッセージの渡し方を考えてると,
何気にそれっぽくオブジェクト指向で書けてる気がしてきました,

で,とりあえずグラフィック面では「ここまで出来れば一段落」と思っていた
フラグメントシェーダの実装を形にするところまで辿り着きました.

先日の記事でGLSL Sandboxに投稿したエフェクト.



2013年9月14日土曜日

staticフィールドってなんぞー

VC++で挫折して以来触ってこなかったオブジェクト指向言語ですが,
Androidでのソフト開発も、ちゃんとJavaを理解してないとサンプルコードが解読できない!
OpenGLみたいな高度なAPIだとなおさら混乱混乱.

AndroidのContextの扱い方でエラーとか警告とか出まくったので,
もう初心のつもりで基本から.クラスのstaticフィールドの実験.

2013年9月10日火曜日

OpenGLESGLSLSGLEELSEG

いまAndroid上でOpenGL ES 1.0を使ってグラフィックの試作をしているのですが,何をするにも実機に流し込んで動作させてやる必要があって少し面倒.

ちょっとした描画やエフェクトのテスト程度のものは,開発環境(Mac OS XのDesktop画面)上で適当にできたりすると楽だなーと思いはじめました.

一般的なデスクトップPC環境で「JavaでOpenGLをやろう」と言いはじめる際にそれっぽくまとまってそうなのは,JOGLというOpen GLのラッパー.
JOGLは,2009年に開発が終了したver.1.1.1と現行バージョンの2.0が存在しますが,なんか2.0がうまく動かなかったのでとりあえず1.1.1のほうを使いはじめました.

2013年9月6日金曜日

OpenGL ESを触りはじめたり

今まで統合開発環境なんて触れた事があるのは 組み込み屋が使うCode Composer StudioやらHEW程度しかないわけですが,
当然Eclipseはもっともっともっとリッチな環境ということで,
Javaと並行してお勉強を進めながらも 色々とカルチャーショックを受けているところです.

実機デバッグも端末側ではなくあくまで開発環境側の目線から整理されてるあたりも, JTAGとは何だったのかと空を見つめながら思いたくなるところであります… 

その実機デバッグですが,ブレークポイントでうまく止まってくれませんでした.
以下の設定が必要なようです.
 ・AndroidManifest.xmlの"Debuggable"を"true"にする.
・プロジェクトのActivityのonCreateメソッドでwaitForDebugger();を呼ぶ.
protected void onCreate(Bundle savedInstanceState){
 android.os.Debug.waitForDebugger();
 super.onCreate(savedInstanceState);
}

Pdほど頻繁に記事を更新できるようなネタが上がらないと思いますが,
ぼちぼち進めていこうと思います.
libpdの実装に入るまでが第一関門ってとこですかね.