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


スポンサーリンク

関連記事

『手を動かしながら学ぶエンジニアのためのデータサイエンス』ハンズオンセミナーに行ってきた
書籍『OpenCV 3 プログラミングブック』を購入
OpenCVの顔検出過程を可視化した動画
kotobankを使ってみた
天体写真の3D動画
Unityで学ぶC#
OpenCV 3.1のsfmモジュールのビルド再び
映画から想像するVR・AR時代のGUIデザイン
Blendify:コンピュータービジョン向けBlenderラッパー
ペーパーカンパニーを作ってみたい
フォトンの放射から格納までを可視化した動画
UnityでPoint Cloudを表示する方法
Math Inspector:科学計算向けビジュアルプログラミングツール
ZBrushで仮面ライダー3号を造る 仮面編 PolyGroup作成に再挑戦
フィーリングに基づくタマムシの質感表現
OpenMayaのPhongShaderクラス
ZBrush4新機能ハイライト 3DCG CAMP 2010
Raytracing Wiki
Quartus II
OpenCVで顔のランドマークを検出する『Facemark API』
読みやすくて高速なディープラーニングのフレームワーク『Caffe』
BlenderのRigifyでリギング
Javaで作られたオープンソースの3DCGレンダラ『Sunflow』
OpenCV バージョン4がリリースされた!
ZBrushでゴジラ2001を作ってみる 身体のアタリを作る
Maya LTでFBIK(Full Body IK)
BlenderでPhotogrammetryできるアドオン
自前のShaderがおかしい件
SIGGRAPH 2020はオンライン開催
ZBrushでアヴァン・ガメラを作ってみる パーツ分割
ZBrushでゴジラ2001を作ってみる 身体のSubToolを分割
C++の抽象クラス
3Dスキャンに基づくプロシージャルフェイシャルアニメーション
Windows Server 2008にAutodesk Maya 2009をインストール
ZBrushで仮面ライダー3号を造る 仮面編 失敗のリカバー
ZBrushCore
映画『ジュラシック・ワールド/炎の王国』のVFXブレイクダウン まとめ
iPhoneアプリ開発 Xcode 5のお作法
Web経由でRaspberry PiのGPIOを操作したい
ZBrushでアヴァン・ガメラを作ってみる 腕の作り込み
OpenCV 3.1から追加されたSfMモジュール
螺鈿(らでん)

コメント