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

関連記事

Cartographer:オープンソースのSLAMライブラリ

Unreal Engine Tokyo MeetUp!へ行ってきた

それぞれの媒質の屈折率

OpenCVの顔検出過程を可視化した動画

映画『シン・ウルトラマン』 メイキング記事まとめ

テスト

ZBrush 2021.6のMesh from Mask機能を使ってみる

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

Maya 2015から標準搭載されたMILA

スクラッチで既存のキャラクターを立体化したい

ZBrushで基本となるブラシ

アニゴジ関連情報

Maya API Reference

プロシージャル手法に特化した本が出てるみたい(まだ買わないけど)

SDカードサイズのコンピューター『Intel Edison』

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

ガメラ生誕50周年

Physically Based Rendering

AfterEffectsプラグイン開発

ZBrushで仮面ライダー3号を造る 仮面編 PolyGroupを分割する

LuxCoreRender:オープンソースの物理ベースレンダラ

UnrealCLR:Unreal Engineで.NET Coreを利用できるプラグイン

にっぽんお好み焼き協会

Faceshiftで表情をキャプチャしてBlender上でMakeHumanのメッシュを動かすデモ

なんかすごいサイト

OpenGVのライブラリ構成

雷情報専門サイト『雷Ch』

CreativeCOW.net

OANDAのfxTrade API

ZBrushの練習 手のモデリング

konashiのサンプルコードを動かしてみた

Unite 2014の動画

prosper

Point Cloud Utils:Pythonで3D点群・Meshを扱うライブラリ

科学技術計算向けスクリプト言語『Julia』

Oculus Goを購入!

Konashiを買った

viser:Pythonで使える3D可視化ライブラリ

pythonもかじってみようかと

ZBrushでアヴァン・ガメラを作ってみる 甲羅の修正・脚の作り込み

PGGAN:段階的に解像度を上げて学習を進めるGAN

オープンソースの物理ベースGIレンダラ『appleseed』

コメント