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

関連記事

ZBrushのお勉強

オープンソースのロボットアプリケーションフレームワーク『RO...

東京アメッシュ 東京ローカルな雨情報サイト

PyDataTokyo主催のDeep Learning勉強会

NeuralNetwork.NET:.NETで使えるTens...

Google Chromecast

フォトンの放射から格納までを可視化した動画

CGレンダラ研究開発のためのフレームワーク『Lightmet...

この連休でZBrushの スキルアップを…

ラクガキの立体化 目標設定

Faceshiftで表情をキャプチャしてBlender上でM...

ドットインストールのWordPress入門レッスン

ROSの薄い本

機械学習に役立つPythonライブラリ一覧

JavaScriptとかWebGLとかCanvasとか

PlanetMath

オーバーロードとオーバーライド

ZBrushでゴジラ2001を作ってみる 側頭部のボリューム...

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

WordPressプラグインの作り方

Paul Debevec

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

組み込み向けのWindows OS 『Windows Emb...

ZBrushCore

Unreal Engine Tokyo MeetUp!へ行っ...

Faster R-CNN:ディープラーニングによる一般物体検...

WordPressの表示を高速化する

Zibra Liquids:Unity向け流体シミュレーショ...

ZBrushでアヴァン・ガメラを作ってみる パーツ分割

ファイバー束

Physics Forests:機械学習で流体シミュレーショ...

Oculus Goを購入!

Mayaでリアルな布の質感を作るチュートリアル

単純に遊びに行くのはだめなのか?

動的なメモリの扱い

テンソル

HSV色空間

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

hloc:SuperGlueで精度を向上させたSfM・Vis...

Raspberry Pi 2のGPIOピン配置

OpenGVの用語

Google製オープンソース機械学習ライブラリ『Tensor...

コメント