OpenGl ES Java实现立方体绘制
项目地址
https://github.com/rocky123shine/CubeDemo
项目效果预览
实现步骤复习
OpenGL ES Android 平台实现图形绘制分为散步:
1. 自定义SurfaceView
1.1自定义的SurfaceView 要继承GLSurfaceView 重写构造
1.2在构造中初始化渲染器
1.3自定义渲染器 实现Renderer接口 实现三个方法
1.3.1 onSurfaceCreated
这里设置背景 和 开启深度测试
1.3.2 onSurfaceChanged
这里设置视口和设置透视矩阵和相机
1.3.3 onDrawFrame
这里清楚缓冲和绘制图形
2. 业务逻辑和数据的处理
2.1 初始化
初始化数据和着色器
2.2 提供绘制方法
提供绘制方法
3. 使用自定义SurfaceVew 并且同步生命周期
Activity中setContentView 是我们自定义的SurfaceView
同步Activity和自定义SurfaceView的生命周期
GLSL
本文主要知识点是着色程序的使用
- GLSL常用变量
1.1.Attribute
1) 只有顶点着色器中会有该修饰符
2) 他是属性修饰符
3) 他只能修饰浮点数的标量向量和矩阵变量 不能修饰其他类型 用于浮点型
1.2. uniform
1) 一致变量限定符 一致变量:对同一组顶点组成的单个3D物体中所有的顶点都相同的量
2) 主要用于顶点和片元着色器
3) 可以修饰所有的基本数据类型
1.3. varying
1) 用来传递顶点着色器终点额数据到片元着色器中
1.4. in 标志数据是输入
1.5. out 标志数据是输出
1.6. inout 既可以做输入又可以做输出 - GLSL常用函数
2.1. glCreateProgram
创建着色程序
2.2.glAttachShader
关联着色程序
2.3.glLinkProgram
链接着色程序
2.4.glGetAttribLocation
获取着色器中除了uniform修饰的变量的id
2.5.glGetUniformLocation
获取着色器中uniform修饰的变量的id
2.6.glUseProgram
使用着色程序
2.7.glUniformMatrix4fv
通过glUniformMatrix4fv给着色程序中uniform修饰的变量赋值
2.8.glVertexAttribPointer
给画笔设置定点数据 颜色和定点位置
2.9.glEnableVertexAttribArray
开始定点绘制
到此你和Rocky一样 已经可以绘制简单的图形了,不妨clone我的GitHub上的代码 运行实现一下,感受一下简单图形的绘制,接着我们将要学习光照、文理、雾等特效。继续和Rocky一起努力吧,come on!!!