AndroidもopenGLも初心者さ (でもJavaは知ってるよ)

自分はiPhoneユーザーなんだけど、AndroidアプリはJavaで書けるし、SDKも無料で手に入るので挑戦してる。(エミュレーターもついてるよ)
AndroidSDKダウンロードはこちらより

そんで、どうせならopengGL ESにも手を出そうかと。
でもopenGLについてもほとんど知らないので、初歩的なことからメモしてく予定。

まず、Androidに限らず、JavaでopenGLを扱う場合の注意点。メモリ管理の問題。
ご存知のように、Javaではガーベッジコレクタが勝手にアクセスの無いメモリを回収するので、メモリの開放とか考えずにコーディングできる。(組み込み系プログラマにJavaプログラマがバカにされちゃう理由でもあるね)
でも、この機能がopenGLでは邪魔になるようで。(openGL自体はCでできてる)

ということで、3Dオブジェクト用のメモリを確保するには、javaのガーベジコレクションの影響を避けるためにjava.nio.BufferクラスのByteBuffer型を使う必要があるらしい。

FloatBuffer型もあるけど、ByteBuffer型でないとメモリの並べ方を指定できないのでByteBuffer型を使う。
例えば、0x12345678をメモリに並べるには2つの方法があって、ビッグエンディアン(0x12, 0x34, 0x56, 0x78)とリトルエンディアン(0x78, 0x56, 0x34, 0x12)がある。
で、二つのどっちかは分からないけど、プログラムを動作させるハードウェア固有の並べ方でメモリを使う必要がある。

4つの頂点のバッファを確保する場合はこんな感じ(floatの4バイト×3Dベクトルだから3つ×頂点の数4つ)


スポンサーリンク

ByteBuffer byteBuffer= ByteBuffer.allocateDirect(4 * 3 * 4);

動作させるハードウェア用の並び方に指定。

byteBuffer.order(ByteOrder.nativeOrder());

ByteBuffer型から、FloatBuffer型を作る

FloatBuffersquare = byteBuffer.asFloatBuffer();

後は、これに頂点の値を並べたfloat型の配列を突っ込めばOK。

javaでのopenGLの関数の基本的な呼び出し方法は普通のopenGLとほとんど共通みたいだ。
参考サイト


スポンサーリンク

関連記事

世界一下品なクマと世界一紳士なクマ
インタラクティブにComputer Visionコーディングができるツール『Live CV』
オープンソースのPhotogrammetryフレームワーク『Alice Vision』
ZScript
写真に3Dオブジェクトを違和感無く合成する『3DPhotoMagic』
ラクガキの立体化 背中の作り込み・手首の移植
ディープラーニングに対応したPythonの機械学習ライブラリ『Pylearn2』
HerokuでMEAN stack
RSSフィードを読込んで表示するWordpressプラグイン『RSSImport』
ハリウッド版「GAIKING」パイロット映像
PolyPaint
ZBrushのZmodelerとDynamic Subdivisionを学ぶ
ZBrush 2018へのアップグレード
iOSデバイスのためのフィジカル・コンピューティングツールキット『konashi(こなし)』
iOSデバイスと接続して連携するガジェットの開発方法
Paul Debevec
布地のシワの法則性
OpenCVベースの背景差分ライブラリ『BGSLibrary』
スクラッチで既存のキャラクターを立体化したい
株式会社ヘキサドライブの研究室ページ
Raspberry Pi 2のGPIOピン配置
Visual Studioでユーザー定義のSyntax HighLightを設定する方法
複屈折
Mechanizeで要認証Webサイトをスクレイピング
フルCGのウルトラマン!?
UnityでOpenCVを使うには?
C#で使える機械学習ライブラリ『Accord.NET Framework』
ZBrush用トポロジー転送プラグイン『ZWrap Plugin for ZBrush』
Blenderの人体モデリングアドオン『MB-Lab』
オープンソースのStructure from Motionライブラリ『Theia』
OpenGVのライブラリ構成
ZBrushのハードサーフェイス用ブラシ
ラクガキの立体化 胴体の追加
オープンソースのテクスチャマッピングシステム『Ptex』
Photogrammetry (写真測量法)
写真から3Dメッシュの生成・編集ができる無料ツール『Autodesk Memento』
『ハン・ソロ/スター・ウォーズ・ストーリー』のVFXブレイクダウン まとめ
ZBrushで基本となるブラシ
『Deep Fluids』流体シミュレーションをディープラーニングで近似する
ZBrush4新機能ハイライト 3DCG CAMP 2010
画像からカメラの3次元位置・姿勢を推定するライブラリ『OpenGV』
ZBrushで仮面ライダー3号を造る ベース編

コメント