[文件] MyTextureRect.java ~ 4KB 下载(18) /** * */ package ghost.android3d.opengl35; import java.nio.ByteBuffer; import java.nio.ByteOrder; import java.nio.FloatBuffer; import java.nio.IntBu http://www.aaafaipiao.com/linked/20130213.do; ffer; import javax.microedition.khronos.opengles.GL10; /** * @author 玄雨 * @qq 821580467 * @date 2013-1-31 */ public class MyTextureRect { private IntBuffer mVertexBuffer;//极点坐标数据缓冲 private FloatBuffer mTextureBuffer;//极点上色数据缓冲 int vCount; int texId; public MyTextureRect(int texId) { this.texId=texId; //极点坐标数据的初始化================begin============================ vCount=6; final int UNIT_SIZE=70000; int vertices[]=new int[] { -1*UNIT_SIZE,1*UNIT_SIZE,0, -1*UNIT_SIZE,-1*UNIT_SIZE,0, 1*UNIT_SIZE,1*UNIT_SIZE,0, -1*UNIT_SIZE,-1*UNIT_SIZE,0, 1*UNIT_SIZE,-1*UNIT_SIZE,0, 1*UNIT_SIZE,1*UNIT_SIZE,0 }; //创立极点坐标数据缓冲 //vertices.length*4是因为一个整数四个字节 ByteBuffer vbb = ByteBuffer.allocateDirect(vertices.length*4); vbb.order(ByteOrder.nativeOrder());//设置字节次序 mVertexBuffer = vbb.asIntBuffer();//变换为int型缓冲 mVertexBuffer.put(vertices);//向缓冲区中放入极点坐标数据 mVertexBuffer.position(0);//设置缓冲区开始方位 //格外提示:因为不一样渠道字节次序不一样数据单元不是字节的一定要经过ByteBuffer //变换,关键是要经过ByteOrder设置nativeOrder(),不然有可能会出问题 //极点坐标数据的初始化================end============================ //极点纹路数据的初始化================begin============================ float textures[]=new float[] { 0,0,0,1,1,0, 0,1,1,1,1,0 }; //创立极点纹路数据缓冲 ByteBuffer tbb = ByteBuffer.allocateDirect(textures.length*4); tbb.order(ByteOrder.nativeOrder());//设置字节次序 mTextureBuffer= tbb.asFloatBuffer();//变换为Float型缓冲 mTextureBuffer.put(textures);//向缓冲区中放入极点上色数据 mTextureBuffer.position(0);//设置缓冲区开始方位 //格外提示:因为不一样渠道字节次序不一样数据单元不是字节的一定要经过ByteBuffer //变换,关键是要经过ByteOrder设置nativeOrder(),不然有可能会出问题 //极点纹路数据的初始化================end============================ } public void drawSelf(GL10 gl) { gl.glEnableClientState(GL10.GL_VERTEX_ARRAY);//启用极点坐标数组 //为画笔指定极点坐标数据 gl.glVertexPointer ( 3, //每个极点的坐标数量为3 xyz GL10.GL_FIXED, //极点坐标值的类型为 GL_FIXED 0, //接连极点坐标数据之间的距离 mVertexBuffer //极点坐标数据 ); //敞开纹路 gl.glEnable(GL10.GL_TEXTURE_2D); //答应运用纹路ST坐标缓冲 gl.glEnableClientState(GL10.GL_TEXTURE_COORD_ARRAY); //为画笔指定纹路ST坐标缓冲 gl.glTexCoordPointer(2, GL10.GL_FLOAT, 0, mTextureBuffer); //绑定当时纹路 gl.glBindTexture(GL10.GL_TEXTURE_2D, texId); //制作图形 gl.glDrawArrays ( GL10.GL_TRIANGLES, //以三角形方法填充 0, vCount ); //封闭纹路 gl.glDisableClientState(GL10.GL_TEXTURE_COORD_ARRAY); gl.glDisable(GL10.GL_TEXTURE_2D); } } http://www.fpshamen.com/linked/20130213.do;
转载于:https://www.cnblogs.com/fpqqchao/archive/2013/02/14/2911135.html