android opengles 最简单的三角形的方法

    这篇主要是对方法的解释


1 视口   用于显示的区域

GLES20.glViewport(
        x, y,             //视口的开始位置
        width, height)     //视口的宽高

2 摄像机

Matrix.setLookAtM(
        mVMatrix,             //矩阵数组
        0,                     //填充矩阵偏移量
        0, 0, 3,             //相机位置坐标
        0f, 0f, 0f,         //观察目标点坐标
        1f, 1f, 1f);        //up向量坐标

3 投影

投影有两种方式    透视投影有近大远小的效果 正交没有 其他都一样

3.1 正交投影

Matrix.orthoM(
                m,                 //矩阵数组
                mOffset,         //数组偏移
                left, right,     //near的 对应近平面左右侧的x坐标
                bottom, top,     //near的 对应近平面左右侧的y坐标
                near, far)        //距离视点的距离

3.2 透视投影

Matrix.frustumM(
                m,                 //矩阵数组
                mOffset,         //数组偏移
                left, right,     //near的 对应近平面左右侧的x坐标
                bottom, top,     //near的 对应近平面左右侧的y坐标
                near, far)        //距离视点的距离

4 坐标变换    坐标变换转换的是坐标系统 而不是物体

Matrix.translateM(m, mOffset, x, y, z)     //平移
Matrix.rotateM(m, mOffset, a, x, y, z)     //旋转
Matrix.scaleM(m, mOffset, x, y, z)         //缩放

5 绘制方式    只有点  线  三角形三种方式

GLES20.glDrawArrays(GLES20.GL_POINTS, 0, vCount);  //第一个参数为绘制方式

点    GL_POINTS

线    GL_LINES    两两相连

GL_LINE_STRIP  //依次相连

GL_LINE_LOOP   //依次相连 最后首尾相连

三角形 GL_TRIANGLEXXX

6 顶点法与索引法

GLES20.glDrawArrays(mode, first, count)             //顶点法  依次绘制每个点 会出现重复的点
GLES20.glDrawElements(mode, count, type, indices)    //索引法  如果有重复的数据 可以指定索引号 去掉重复的顶点

7 卷绕与背面裁剪

卷绕就是绘制顶点的顺序 连接顶点时 顺时针为正面,逆时针为反面

因为反面是看不到的 如果也绘制会浪费资源

GLES20.glEnable(GLES20.GL_CULL_FACE);//打开背面裁剪
GLES20.glDisable(GLES20.GL_CULL_FACE);//关闭背面裁剪


补充:

layout限定符

3.0以后可用,用于glsl属性变量索引 就是用glsl中的数字直接替代handle

用法:

glsl文件中 layout (location = 1) int vec3 aPosition;

java文件中 GLES30.glBindAttribLocation(mProgram, 1, "aPosition");  //绑定索引与变量名

GLES30.glVertexAttribPointer(1, ...);    //handler用索引替代


顶点常量属性

GLES30.glVertexAttribPointer是将顶点逐个传入着色器,如果传入的是相同的属性(如:颜色),则每次都传入相同的值,就显得效率不高了

GLES30.glVertexAttribNf/GLES30.glVertexAttribNfv 对所有顶点指定相同的属性值 N代表传入值的个数1~4




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值