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とほとんど共通みたいだ。
参考サイト

関連記事

iPadをWindows PCのサブディスプレイにする無料アプリ『DisplayLink』

ラクガキの立体化 進捗

Physics Forests:機械学習で流体シミュレーションを近似する

Google App Engine上のWordPressでAmazonJSを利用する

海外ドラマのChromaKey

トランスフォーマー :リベンジのメイキング (デジタルドメイン)

ファイバー束

TeleSculptor:空撮動画からPhotogrammetryするツール

ZBrushのお勉強

ZBrushで仮面ライダー3号を造る ベース編

発想は素敵、でも今は役立たずだったり…

Windows Server 2008にAutodesk Maya 2009をインストール

PyTorch3D:3Dコンピュータービジョンライブラリ

ラクガキの立体化 胴体の追加

ZBrushのZScript入門

Oculus Goを購入!

社団法人 映像情報メディア学会

最小二乗法

Raspberry PiのGPIOを操作するPythonライブラリ『RPi.GPIO』の使い方

ドラマ『ファーストクラス』のモーショングラフィックス

甲虫の色とか

中学3年生が制作した短編映像作品『2045』

ZBrushの練習 手のモデリング

ZBrushでゴジラ2001を作ってみる 姿勢の変更

2012のメイキングまとめ(途中)

Mac用のSubversionクライアント 『SCplugin』

ZBrushでゴジラ2001を作ってみる 頭の概形作り

無料で使える人体3DCG作成ツール

ZBrushで作った3Dモデルを立体視で確認できるVRアプリを作る

豚インフルエンザ

MFnDataとMFnAttribute

複屈折

ラクガキの立体化 反省

『パシフィック・リム: アップライジング』のVFXブレイクダウン まとめ

オープンソースの顔の動作解析ツールキット『OpenFace』

アニゴジ関連情報

trimesh:PythonでポリゴンMeshを扱うライブラリ

ZBrushで仮面ライダー3号を造る 仮面編 ZRemesher

Webページ制作のためのメモ

ラクガキの立体化 1年半ぶりの続き

ZBrushのキャンバスにリファレンス画像を配置する

adskShaderSDK

コメント