首页 技术 正文
技术 2022年11月23日
0 收藏 847 点赞 2,151 浏览 2487 个字
OpenGL ES andoid学习————2
package com.xhm.getaccount;import java.nio.ByteBuffer;
import java.nio.ByteOrder;
import java.nio.FloatBuffer;
import java.nio.ShortBuffer;import javax.microedition.khronos.opengles.GL10;/**
* 主要实现渲染时的效果
*
* @author Administrator
*
*/
public class MyMesh {
// 顶点的个数
private short mUnmIndexSize;
// 顶点数组缓冲
private FloatBuffer mVertexBuffer;
// 顶点顺序数组缓冲
private ShortBuffer mIndexBuffer;
// 设置画笔的颜色
private float[] rgba = new float[] { 0.0f, 0.0f, 0.0f, 1.0f }; /**
* 画笔设置
*
* @param gl
* 画笔
*/
public void draw(GL10 gl) {
/**
* 设置顶点的连接顺序
*
* glFrontFace(GL_CCW)设置CCW方向为“正面”,CCW即CounterClockWise,逆时针
*
* glFrontFace(GL_CW)设置CW方向为“正面”,CW即ClockWise,顺时针
*/
gl.glFrontFace(GL10.GL_CCW);
/**
* 开启剔除效果
*/
gl.glEnable(GL10.GL_CULL_FACE);
/**
* glCullFace()参数包括GL_FRONT和GL_BACK.
*
* 表示禁用多边形正面或者背面上的光照、阴影和颜色计算及操作,
*
* 消除不必要的渲染计算。
*/
gl.glCullFace(GL10.GL_BACK);
/**
* 开启某种状态,类似管道流,用完之后需要关闭。
*
* GL_VERTEX_ARRAY准备接受顶点数组
*/
gl.glEnableClientState(GL10.GL_VERTEX_ARRAY);
/**
* 参数:
*
* size:指定了每个顶点对应的坐标个数,只能是2,3,4中的一个,默认值是4
* type:指定了数组中每个顶点坐标的数据类型,可取常量:GL_BYTE, GL_SHORT,GL_FIXED,GL_FLOAT;
* stride:指定了连续顶点间的字节排列方式,如果为0,数组中的顶点就会被认为是按照紧凑方式排列的,默认值为0
* pointer:制订了数组中第一个顶点的首地址
* ,默认值为0,对于我们的android,大家可以不用去管什么地址的,一般给一个IntBuffer就可以了。
*/
gl.glVertexPointer(3, GL10.GL_FLOAT, 0, mVertexBuffer);
/**
* 设置画笔的颜色
*/
gl.glColor4f(rgba[0], rgba[1], rgba[2], rgba[3]);
/**
* mode指定 绘制图元的类型,它应该是下列值之一:
*
* GL_POINTS:独立的点。
*
* GL_LINE_STRIP:将所有点连接起来组成一条线。
*
* GL_LINE_LOOP:将所有点连接起来组成一个圈。
*
* GL_LINES:两个相连组成线段。
*
* GL_TRIANGLE_STRIP:每相邻三个顶点组成一个三角形,为一系列相接三角形构成。
*
* GL_TRIANGLE_FAN:以一个点为三角形公共顶点,组成一系列相邻的三角形。
*
* GL_TRIANGLES:每隔三个顶点构成一个三角形,为多个三角形组成。
*
* GL_QUAD_STRIP:
*
* GL_QUADS:
*
* GL_POLYGON:
*
* count为绘制图元的数量。
*
* type为索引值的类型,只能是下列值之一: GL_UNSIGNED_BYTE, GL_UNSIGNED_SHORT, or
* GL_UNSIGNED_INT。
*
* indices:指向索引存贮位置的指针
*/
gl.glDrawElements(GL10.GL_TRIANGLES, mUnmIndexSize,
GL10.GL_UNSIGNED_SHORT, mIndexBuffer);
// 关闭开启的所有通道
gl.glDisableClientState(GL10.GL_VERTEX_ARRAY);
gl.glDisable(GL10.GL_CULL_FACE);
} /**
* 添加顶点数组
*
* @param vertices
* 顶点坐标3个一组
*/
public void setVertices(float[] vertices) {
ByteBuffer vbb = ByteBuffer.allocateDirect(vertices.length * 4);
vbb.order(ByteOrder.nativeOrder());
mVertexBuffer = vbb.asFloatBuffer();
mVertexBuffer.put(vertices);
mVertexBuffer.position(0);
} /**
* 添加顶点顺序数组
*
* @param indices
* 顺序三个一组,组成三角形
*/
public void setIndices(short[] indices) {
ByteBuffer ibb = ByteBuffer.allocateDirect(indices.length * 2);
ibb.order(ByteOrder.nativeOrder());
mIndexBuffer = ibb.asShortBuffer();
mIndexBuffer.put(indices);
mIndexBuffer.position(0);
mUnmIndexSize = (short) indices.length;
} /**
* 设置画笔的颜色
*
* @param r
* @param g
* @param b
* @param a
*/
public void setColor(float r, float g, float b, float a) {
rgba[0] = r;
rgba[1] = g;
rgba[2] = b;
rgba[3] = a;
}
}
上一篇: Cobbler简介
相关推荐
python开发_常用的python模块及安装方法
adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheeta…
日期:2022-11-24 点赞:878 阅读:8,983
Educational Codeforces Round 11 C. Hard Process 二分
C. Hard Process题目连接:http://www.codeforces.com/contest/660/problem/CDes…
日期:2022-11-24 点赞:807 阅读:5,500
下载Ubuntn 17.04 内核源代码
zengkefu@server1:/usr/src$ uname -aLinux server1 4.10.0-19-generic #21…
日期:2022-11-24 点赞:569 阅读:6,344
可用Active Desktop Calendar V7.86 注册码序列号
可用Active Desktop Calendar V7.86 注册码序列号Name: www.greendown.cn Code: &nb…
日期:2022-11-24 点赞:733 阅读:6,127
Android调用系统相机、自定义相机、处理大图片
Android调用系统相机和自定义相机实例本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显…
日期:2022-11-24 点赞:512 阅读:7,761
Struts的使用
一、Struts2的获取  Struts的官方网站为:http://struts.apache.org/  下载完Struts2的jar包,…
日期:2022-11-24 点赞:671 阅读:4,838