2 * NyARRaster_RGBにOpenGL用のデータ変換機能を追加したものです。
\r
4 * (c)2008 A虎@nyatla.jp
\r
5 * airmail(at)ebony.plala.or.jp
\r
8 package jp.nyatla.nyartoolkit.jogl.utils;
\r
10 import javax.media.format.RGBFormat;
\r
11 import javax.media.opengl.GL;
\r
12 import jp.nyatla.nyartoolkit.NyARException;
\r
13 import jp.nyatla.nyartoolkit.jmf.utils.*;
\r
14 import jp.nyatla.nyartoolkit.core.*;
\r
16 public class GLNyARRaster_RGB extends JmfNyARRaster_RGB
\r
18 private byte[] gl_buf;
\r
19 private int gl_flag;
\r
21 public GLNyARRaster_RGB(GL i_ref_gl,NyARParam i_param)
\r
23 super(i_param.getX(),i_param.getY());
\r
24 this.gl_flag=GL.GL_RGB;
\r
25 this.gl_buf=new byte[this.width*this.height*3];
\r
27 public void setBuffer(javax.media.Buffer i_buffer,boolean i_is_reverse) throws NyARException
\r
29 //JMFデータでフォーマットプロパティを初期化
\r
30 initFormatProperty((RGBFormat)i_buffer.getFormat());
\r
32 byte[] src_buf=(byte[])i_buffer.getData();
\r
35 int length=this.width*3;
\r
37 int dest_idx=(this.height-1)*length;
\r
38 for(int i=0;i<this.height;i++){
\r
39 System.arraycopy(src_buf,src_idx,this.gl_buf,dest_idx,length);
\r
44 System.arraycopy(src_buf,0,gl_buf,0,src_buf.length);
\r
47 switch(this.pix_type){
\r
48 case GLNyARRaster_RGB.PIXEL_ORDER_BGR:
\r
49 this.gl_flag=GL.GL_BGR;
\r
51 case GLNyARRaster_RGB.PIXEL_ORDER_RGB:
\r
52 this.gl_flag=GL.GL_RGB;
\r
55 throw new NyARException();
\r
57 //ref_bufをgl_bufに差し替える
\r
61 * GLでそのまま描画できるRGBバッファを返す。
\r
64 public byte[] getGLRgbArray()
\r
66 return this.ref_buf;
\r
69 * GL用のRGBバッファのバイト並びタイプを返す。
\r
72 public int getGLPixelFlag()
\r
74 return this.gl_flag;
\r