Android Open GL使用int类型数据定义坐标值

来源:互联网 发布:淘宝秒杀软件app 编辑:程序博客网 时间:2024/06/05 02:25

Open Gl只使用int类型值的高16位作为坐标值,比如:坐标值为1需要使用0x10000。

        Open Gl底层使用C语言编写,为了与C语言的类型匹配,向glVertextPointer方法转值时需要使用IntBuffer(FloatBuffer)对象。因此,需要将int(float)类型的值放到IntBuffer(FloatBuffer)对象中。这些工作一般在onSurfaceCreated方法中完成。

<span style="font-size:18px;">private IntBuffer rectangleBuffer;@overridepublic void onSurfaceCreated(GL10 gl, EGLConfig config) {  //  为ByteBuffer对象分批内存空间  ByteBuffer byteBuffer = ByteBuffer.allocateDirect(rectangleVertices.length * 4);  // 按本地字节顺序使用字节数据  byteBuffer.order(ByyteOrder.nativeOrder());  // 将ByteBuffer对象转换成IntBuffer对象  rectangleBuffer = byteBuffer.asIntBuffer();  // 将定义顶点坐标的int数组放到IntBuffer对象中  rectangleBuffer.put(rectangleVertices);  // 将IntBuffer对象的内部指针移动到第一个字节的位置  rectangleBuffer.position(0);}</span>

0 0
原创粉丝点击