« つらつら、 | トップページ | »

2010.12.23

java ByteBufferのメモ

OpenGLにて配列を使う際、gl.glVertexPointer()等を使用するのですが、その引数に配列のpointerを渡さなければならない。
これがよく分からず、ネットからコードを拝借することとした。コードはおおかた理解できたのだが、

ByteBuffer bb.order(ByteOrder.nativeOrder());

の一文が分からなかった。なので、下のコードのようなテストをしてみたところ、

no.01 java.nio.DirectByteBuffer[pos=0 lim=12 cap=12]
ByteOrder.nativeOrder() LITTLE_ENDIAN
no.02 java.nio.DirectByteBuffer[pos=0 lim=12 cap=12]
no.03 java.nio.DirectFloatBufferU[pos=0 lim=3 cap=3]
get.01 0.1
get.02 0.2

と出力を得る事が出来た。
はて、“LITTLE_ENDIAN”?
調べてみると、

2バイト以上のデータ量を持つ数値データを記録したり転送するときには1バイトごとに分割するが、その際の記録/転送を行う順番のこと。via.バイトオーダーとは

リトルエンディアンとは、最下位からのパターンだ。なるほど。

  1. import java.nio.ByteBuffer;
  2. import java.nio.ByteOrder;
  3. import java.nio.FloatBuffer;
  4.  
  5.  
  6. public class bufferTest {
  7.  
  8.     static final float fBuffer[] = { 0.1f, 0.2f, 0.3f };
  9.  
  10.     public static void main(String[] args){
  11.  
  12.         ByteBuffer bb = ByteBuffer.allocateDirect(fBuffer.length * 4);
  13.  
  14.         System.out.println("no.01  " + bb);//////////////////////
  15.  
  16.         System.out.println("ByteOrder.nativeOrder() " + ByteOrder.nativeOrder());
  17.         bb.order(ByteOrder.nativeOrder());
  18.  
  19.         System.out.println("no.02  " + bb);//////////////////////
  20.  
  21.         FloatBuffer fb = bb.asFloatBuffer();
  22.  
  23.         System.out.println("no.03  " + fb);//////////////////////
  24.  
  25.         fb.put(fBuffer);
  26.  
  27.         fb.position(0);
  28.  
  29.         System.out.println("get.01 " + fb.get());//////////////////////
  30.         System.out.println("get.02 " + fb.get());//////////////////////
  31.        
  32.     }
  33. }



はじめてのOpenGL はじめてのOpenGL
ライブラリを使った「3D‐CGプログラミング」の基本


価格 : ¥ 2,415(税込み)

「OpenGL」(Open Graphics Library)は、3Dグラフィックスを生成するためのライブラリで、さまざまな言語、プラットフォームで使うことができます。「開発環境」の設定から「関連ライブラリ」の使い方まで。OpenGLをまったく触ったことがない人でも、すぐ始められるように、OpenGLと3Dグラフィックスの概要から学んでいきます。

|

« つらつら、 | トップページ | »

java」カテゴリの記事

コメント

コメントを書く



(ウェブ上には掲載しません)




トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/198455/50379194

この記事へのトラックバック一覧です: java ByteBufferのメモ:

« つらつら、 | トップページ | »