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

関連記事

螺鈿(らでん)

Texturing & Modeling A Pro...

皆声.jp

Unreal Engine 5の情報が公開された!

顔追跡による擬似3D表示『Dynamic Perspecti...

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

OpenCVでiPhone6sのカメラをキャリブレーションす...

複屈折

ZBrushからBlenderへモデルをインポート

HD画質の無駄遣い

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

この本読むよ

GAN (Generative Adversarial Ne...

adskShaderSDK

ZBrushでアヴァン・ガメラを作ってみる 下アゴと頭部を作...

OpenCVでカメラ画像から自己位置認識 (Visual O...

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

ニンテンドー3DSのGPU PICA200

『スター・ウォーズ フォースの覚醒』のVFXブレイクダウン ...

フリーで使えるスカルプト系モデリングツール『Sculptri...

python-twitterで自分のお気に入りを取得する

Adobe Photoshop CS5の新機能

MeshroomでPhotogrammetry

トランスフォーマーロストエイジのメイキング

顔モデリングのチュートリアル

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

Unreal Engineの薄い本

Model View Controller

Maya LTのQuick Rigを試す

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

Unity ARKitプラグインサンプルのドキュメントを読む

SVM (Support Vector Machine)

ZBrushでゴジラ2001を作ってみる 身体のSubToo...

SIGGRAPH論文へのリンクサイト

定数

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

clearcoat Shader

『Follow Finder』 (Google Labs)

Blenderでよく使うaddon

SONYの自律型エンタテインメントロボット『aibo』

iPhone・iPod touchで動作する知育ロボット『R...

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

コメント