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

関連記事

自前Shaderの件 解決しました

Rerun:マルチモーダルデータの可視化アプリとSDK

UnityでTweenアニメーションを実装できる3種類の無料...

2D→3D復元技術で使われる用語まとめ

ZBrushのハードサーフェイス用ブラシ

iPhone 3GSがますます欲しくなる動画

世界一下品なクマと世界一紳士なクマ

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

C++の抽象クラス

ZBrushでアヴァン・ガメラを作ってみる

Pythonの自然言語処理ライブラリ『NLTK(Natura...

GAN (Generative Adversarial Ne...

C++ 標準テンプレートライブラリ (STL)

CGのためのディープラーニング

iPadをWindows PCのサブディスプレイにする無料ア...

ペーパーカンパニーを作ってみたい

WinSCP

Windows Server 2008にAutodesk M...

クラスの基本

それぞれの媒質の屈折率

網元AMIで作ったWordpressサイトのインスタンスをt...

kotobankを使ってみた

Machine Debug Manager

ZBrushでアヴァン・ガメラを作ってみる おでこ(?)のバ...

WordPress on Google App Engine...

最小二乗法

Phongの表現力パネェ 材質別のPhong Shader用...

仮想関数

Unity ARKitプラグインサンプルのチュートリアルを読...

Structure from Motion (多視点画像から...

After Effects全エフェクトの解説(6.5)

SIGGRAPH 2020はオンライン開催

SculptrisとBlenderで作ったGodzilla ...

Digital Emily Project:人間の顔をそっく...

書籍『開田裕治 怪獣イラストテクニック』

WebGL開発に関する情報が充実してきている

Unityで学ぶC#

UnityでLight Shaftを表現する

ラクガキの立体化 3Dプリント注文

WordPress on Windows Azure

Multi-View Environment:複数画像から3...

uvでWindows11のPython環境を管理する

コメント