2013.01.22
【OpenGL】Androidにて頂点テクスチャを試す
そんな技術があるなんて知らんかった。
OpenGLのVertexShederでテクスチャを使い情報を渡すこと。
自分的には人体モデルにてスキニングを行いたいわけだが
ボーン情報を一括してVertexShederに渡したいわけです。
しかし、取得できるメモリに上限があるらしく上限が決められてしまう。
自分だと64個くらいしか確保できない。
これ以上渡すには頂点情報をテクスチャ化して
VertexShederにてTexture2Dを使って取得し
大量のメモリを使用できるようなります。
概略的には以下のページを見るとわかりやすいと思います。
Link:OpenGLでGPUスキニング【頂点テクスチャ編】 - とあるPGの研究記録Ⅱ(レコーダー)
これは素晴らしいと思い、実装してみました。
しかし、VertexShederのコンパイルでエラーとなってしまいます。
どうも、テストで使っているGalaxy S2はVertexShederでのtexture2Dは使えないようです。
Link:function texture2D not supported on target - Google グループ
どうもこの機能を使うと省電力CPUでは無理があるとのこと。
この機能を使えるかを確認するには MAX_VERTEX_TEXTURE_IMAGE_UNITS の値を確認するといいらしい。
調べてみると見事に0でした。
この値はほかの端末でも0みたいなので頂点テクスチャ機能は
現在のスマフォでは実装不可能なようです。
Link:制限を調べるなど。 - ちょっとしたメモなど
そんなわけで頂点テクスチャの実装はできなかったけど
この技術は3Dでは基本の処理っぽいので理屈を理解できただけでも良しとしましょう。
[aws asin="484433008X"]
関連記事