OpenGL学习(四):添加颜色
来源:互联网 发布:仿淘宝首页html 编辑:程序博客网 时间:2024/05/08 14:21
一、添加单色
步骤一、
FlatColoredSquare类继承Square类,重写Square的draw()方法
package com.example.administrator.createopenglview;
import javax.microedition.khronos.opengles.GL10;/** * Created by Administrator on 2016/9/26. * Flat coloring(单色) * 是通知OpenGL使用单一的颜色来渲染,OpenGL将一直使用指定的颜色来渲染直到你指定其它的颜色。 * 指定颜色的方法为 * public abstract void glColor4f(float red, float green, float blue, float alpha)。 * 缺省的red,green,blue为1,代表白色。这也是为什么前面显示的正方形都是白色的缘故。 */public class FlatColoredSquare extends Square { @Override public void draw(GL10 gl) { /** * RGBA模式(红,绿,蓝,透明度) */ gl.glColor4f(1f, 0f, 0f, 1f); super.draw(gl); }}
步骤二、在OpenGLGLRenderer中的onSurfaceCreate()方法
/** * 初始化Square */if (square == null) square = new FlatColoredSquare();
步骤 三、界面展示
二、添加渐变色
步骤一、SmoothColoredSquare类继承Square类,重写Square的draw()方法
package com.example.administrator.createopenglview;import java.nio.ByteBuffer;import java.nio.ByteOrder;import java.nio.FloatBuffer;import javax.microedition.khronos.opengles.GL10;/** * Created by Administrator on 2016/9/26. * <p> * Smooth coloring (平滑颜色过渡) * 当给每个顶点定义一个颜色时,OpenGL自动为不同顶点颜色之间生成中间过渡颜色(渐变色) */public class SmoothColoredSquare extends Square { //颜色映射到顶点。 float[] colors = { 1f, 0f, 0f, 1f,//顶点 0 红 0f, 1f, 0f, 1f,//顶点 1 绿 0f, 0f, 1f, 1f,//顶点 2 蓝 1f, 0f, 1f, 1f,//顶点 3 洋红 }; //颜色缓存 private final FloatBuffer colorFloatBuffer; public SmoothColoredSquare() { super(); //浮动有4个字节,颜色(RGBA)* 4字节 ByteBuffer cbb = ByteBuffer.allocateDirect(colors.length * 4); cbb.order(ByteOrder.nativeOrder()); colorFloatBuffer = cbb.asFloatBuffer(); colorFloatBuffer.put(colors); colorFloatBuffer.position(0); } /** * 画正方形 * * @param gl */ @Override public void draw(GL10 gl) { /** * 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, verFloatBuffer); /** * 可以控制管道(pipeline)开关 *函数参数: *array ---- 可以控制的管道(pipeline)开关可以有:GL_COLOR_ARRAY (颜色) , *GL_NORMAL_ARRAY (法线), GL_TEXTURE_COORD_ARRAY (材质), *GL_VERTEX_ARRAY(顶点),GL_POINT_SIZE_ARRAY_OES等 */ gl.glEnableClientState(GL10.GL_COLOR_ARRAY);//新行补充。 //指出了颜色缓冲区的位置。 gl.glColorPointer(4, GL10.GL_FLOAT, 0, colorFloatBuffer);//新行补充。 super.draw(gl); //关闭通道 gl.glDisableClientState(GL10.GL_COLOR_ARRAY); }}
步骤二、在OpenGLGLRenderer中的onSurfaceCreate()方法
步骤 三、界面展示
0 0
- OpenGL学习(四):添加颜色
- OpenGL学习四:矢量图形添加颜色
- openGl学习之添加颜色
- Opengl学习笔记:(四)添加菜单
- SCARA——OpenGL入门学习四(颜色)
- OpenGL入门学习[四]颜色的选择。
- Android OpenGL添加颜色
- OpenGL入门学习之四——颜色的选择
- Android OpenGL ES学习笔记之添加颜色
- OpenGL学习笔记(四)
- OpenGL入门学习(四)
- OpenGL入门学习(四)
- OpenGL入门学习(四)
- OpenGL入门学习(四)
- OpenGL入门学习(四)
- OpenGL学习总结(四)
- OpenGL学习笔记(四)
- openGL学习笔记2(颜色)
- wordpress只显示一个主题,解决方案
- 1934. 移动小球
- clear file value (清除文件框中的值)
- 寻找最大质因数(质因数分解+剪枝)
- js实现点击导航栏之后页面滚动
- OpenGL学习(四):添加颜色
- HDU ACM 11 2054 A == B?
- 原生态的网页验证码(Servlet)
- 全面介绍javascript异常处理(try…catch…finally window.onerror)
- 上级1
- 学习笔记:简单工厂模式
- [LeetCode]--299. Bulls and Cows
- linux apache 多域名多站点配置
- Linux中cp总是提示覆盖文件的解决办法