openGL es实现小实例
在模拟器中要做一个彩色的三角形和正方形,代码里面我写了一些注解,新学opengl,不正确的地方望指正!
1、SqureOpenGlActivity类为Activity类
import android.app.Activity;
import android.opengl.GLSurfaceView;
import android.os.Bundle;
import android.view.WindowManager;public class SqureOpenGlActivity extends Activity {/** Called when the activity is first created. */@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);MyRenderer glRender = new MyRenderer();GLSurfaceView gView = new GLSurfaceView(this);gView.setRenderer(glRender);setContentView(gView);}
}
2、渲染类MyRenderer
import java.nio.ByteBuffer;
import java.nio.ByteOrder;
import java.nio.IntBuffer;import javax.microedition.khronos.egl.EGLConfig;
import javax.microedition.khronos.opengles.GL10;import android.opengl.GLSurfaceView.Renderer;public class MyRenderer implements Renderer {static int one = 0x10000;//int one =1//缓冲区:三角形、正方形、三角形颜色、正方形颜色private static IntBuffer trangelBuffer;private static IntBuffer squreBuffer;private static IntBuffer mTraColorBuffer;private static IntBuffer mSquColorbBuffer;//三角形顶点private int[] vertices = new int[]{0,one,0,-one,-one,0,one,-one,0};//正方形坐标private int[] squres = new int[] {one,one,0,-one,one,0,one,-one,0,-one,-one,0};//三角形各个顶点的颜色private int[] colorTra = new int[]{one,0,0,one,0,one,0,one,0,0,one,one};//正方形各个顶点的颜色private int[] colorSqu = new int[] {one,0,0,0,one,one,0,0,one,one,one,0,0,one,one,0};@Overridepublic void onDrawFrame(GL10 gl) {// 准备缓冲区//trangleByteBuffer vbb1 = ByteBuffer.allocateDirect(vertices.length * 4);vbb1.order(ByteOrder.nativeOrder());trangelBuffer = vbb1.asIntBuffer();trangelBuffer.put(vertices);trangelBuffer.position(0);//squreByteBuffer vbb2 = ByteBuffer.allocateDirect(squres.length * 4);vbb2.order(ByteOrder.nativeOrder());squreBuffer = vbb2.asIntBuffer();squreBuffer.put(squres);squreBuffer.position(0);//trangle colorByteBuffer color1 = ByteBuffer.allocateDirect(colorTra.length * 4);color1.order(ByteOrder.nativeOrder());mTraColorBuffer = color1.asIntBuffer();mTraColorBuffer.put(colorTra);mTraColorBuffer.position(0);//squre colorByteBuffer color2 = ByteBuffer.allocateDirect(colorSqu.length * 4);color2.order(ByteOrder.nativeOrder());mSquColorbBuffer = color2.asIntBuffer();mSquColorbBuffer.put(colorSqu);mSquColorbBuffer.position(0);//开始绘制三角形gl.glClear(GL10.GL_COLOR_BUFFER_BIT | GL10.GL_DEPTH_BUFFER_BIT);gl.glLoadIdentity();//允许顶点和颜色缓冲gl.glEnableClientState(GL10.GL_VERTEX_ARRAY);gl.glEnableClientState(GL10.GL_COLOR_ARRAY);//三角形处理gl.glTranslatef(-1.5f, 0.0f, -6.0f);gl.glVertexPointer(3, GL10.GL_FIXED, 0, trangelBuffer);gl.glColorPointer(4, GL10.GL_FIXED, 0, mTraColorBuffer);gl.glDrawArrays(GL10.GL_TRIANGLES, 0, 3);gl.glLoadIdentity();//正方形处理gl.glTranslatef(1.5f, 0.0f, -6.0f);gl.glVertexPointer(3, GL10.GL_FIXED, 0, squreBuffer);gl.glColorPointer(4, GL10.GL_FIXED, 0, mSquColorbBuffer);gl.glDrawArrays(GL10.GL_TRIANGLE_STRIP, 0, 4);//取消缓冲gl.glDisableClientState(GL10.GL_VERTEX_ARRAY);gl.glDisableClientState(GL10.GL_COLOR_ARRAY);}@Overridepublic void onSurfaceChanged(GL10 gl, int width, int height) {float ratio = (float) width / height;// 窗体变化时调用//场景大小gl.glViewport(0, 0, width, height);//投影矩阵gl.glMatrixMode(GL10.GL_PROJECTION);gl.glLoadIdentity();//设置视图的大小gl.glFrustumf( -ratio, ratio, -1, 1, 1f, 10);//选择观察矩阵模型gl.glMatrixMode(GL10.GL_MODELVIEW);gl.glLoadIdentity();}@Overridepublic void onSurfaceCreated(GL10 gl, EGLConfig config) {// 关闭图形抖动,否则灯光照射后没有光斑效果gl.glDisable(GL10.GL_DITHER);//透视效果gl.glHint(GL10.GL_PERSPECTIVE_CORRECTION_HINT, GL10.GL_FASTEST);//启用平滑阴影gl.glShadeModel(GL10.GL_SMOOTH);//设置深度缓存gl.glClearDepthf(1.0f);//启用深度缓存gl.glEnable(GL10.GL_DEPTH_TEST);//设置深度测试的类型gl.glDepthFunc(GL10.GL_LEQUAL);// gl.glLoadIdentity();//清屏为黑色gl.glClearColor(0, 0, 0, 0);}}
3、运行效果如下:
openGL es实现小实例相关推荐
- java opengl_java基于OpenGL ES实现渲染实例
这篇文章主要介绍了java基于OpenGL ES实现渲染,实例分析了OpenGL渲染操作的相关技巧,需要的朋友可以参考下 本文实例讲述了java基于OpenGL ES实现渲染的方法.分享给大家供大家参 ...
- android平台下OpenGL ES 3.0实例详解顶点属性、顶点数组
OpenGL ES 3.0学习实践 android平台下OpenGL ES 3.0从零开始 android平台下OpenGL ES 3.0绘制纯色背景 android平台下OpenGL ES 3.0绘 ...
- android opengl es 粒子效果实例代码
概述:粒子系统采用许多形状简单的微小粒子作为基本元素,用它们来表示不规则模糊物体,系统中的每个粒子都有各自的生命周期,我们可以管理它们从创建到消亡的时间,它们都要经历"产生".&q ...
- OpenGL ES简介(一)
摘要: 概述 在聊Android的View渲染流程中,通常会有一个比较核心的步骤:通过OpeGL ES接口调用GPU接口通知GPU绘制图形.其完整的流程:UI对象---->CPU处理为多维图形, ...
- android平台下OpenGL ES 3.0绘制圆点、直线和三角形
OpenGL ES 3.0学习实践 android平台下OpenGL ES 3.0从零开始 android平台下OpenGL ES 3.0绘制纯色背景 android平台下OpenGL ES 3.0绘 ...
- android平台下OpenGL ES 3.0从零开始
OpenGL ES 3.0学习实践 android平台下OpenGL ES 3.0从零开始 android平台下OpenGL ES 3.0绘制纯色背景 android平台下OpenGL ES 3.0绘 ...
- android平台下OpenGL ES 3.0给图片添加黑白滤镜
OpenGL ES 3.0学习实践 android平台下OpenGL ES 3.0从零开始 android平台下OpenGL ES 3.0绘制纯色背景 android平台下OpenGL ES 3.0绘 ...
- android平台下OpenGL ES 3.0绘制纯色背景
OpenGL ES 3.0学习实践 android平台下OpenGL ES 3.0从零开始 android平台下OpenGL ES 3.0绘制纯色背景 android平台下OpenGL ES 3.0绘 ...
- android平台下OpenGL ES 3.0使用GLSurfaceView对相机Camera预览实时处理
OpenGL ES 3.0学习实践 android平台下OpenGL ES 3.0从零开始 android平台下OpenGL ES 3.0绘制纯色背景 android平台下OpenGL ES 3.0绘 ...
最新文章
- JavaScript—— 前端编程语言
- 实战tcpdump看RST
- java实现文件名过滤器接口_Java使用文件过滤器FileFilter、FilenameFilter搜索文件
- 田志刚:企业知识管理与用户创造内容(UGC)
- ☆聊聊Spring系列_Index
- SUSE Linux启动过程执行脚本顺序
- maven项目调试debug错误Source not found.
- window覆盖导航栏
- MFC开发IM-第二十四篇、使用 acl 库针对 C++ 对象进行序列化及反序列编程
- c# 正则表达式对网页进行有效内容抽取
- win7 IE11下,无法通过Windows更新为其他微软产品获取更新
- cadence 617工艺库安装以及相关问题解决
- 云迁移实践:VMware虚拟机迁移到华为云
- 易语言制作计算软件简单步骤_ps软件制作一寸照,原来如此简单
- Navicat导出整个数据库
- protobuf 与 redis 的结合
- 叮!丰巢智能柜那些贴心服务的正确打开方式
- Inwook,Kong
- Amazon Review Dataset数据集介绍
- 让人感慨的21个故事
热门文章
- 在不了解这5种语言以后就可能永远要消失在世界上了
- 2个程序员街头卖唱,挽救了自己的秃头
- oracle 去除英文字母,请教:如何去掉字段中的所有标点符号(包括全角的和半角的)...
- 执行ios命令_MEDUZA:一款针对iOS应用程序的通用SSL解绑工具
- Flex学习笔记(2)——使用ActionScript脚本
- ocr oracle,Oracle RAC备份和恢复OCR-Oracle
- 卷积神经网络CNN(8)—— Pix2Pix Application -- Aerialmap Lane Line Detection (Pix2Pix应用:航拍图车道线检测)
- Adobe illustrator 删除干扰元素 - 连载 15
- 重磅预售 | 分子生物学与遗传学经典名著——《Lewin基因XII》(中译本)
- AE进度条读取动画插件 LoadUP 1.71