在模拟器中要做一个彩色的三角形和正方形,代码里面我写了一些注解,新学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实现小实例相关推荐

  1. java opengl_java基于OpenGL ES实现渲染实例

    这篇文章主要介绍了java基于OpenGL ES实现渲染,实例分析了OpenGL渲染操作的相关技巧,需要的朋友可以参考下 本文实例讲述了java基于OpenGL ES实现渲染的方法.分享给大家供大家参 ...

  2. android平台下OpenGL ES 3.0实例详解顶点属性、顶点数组

    OpenGL ES 3.0学习实践 android平台下OpenGL ES 3.0从零开始 android平台下OpenGL ES 3.0绘制纯色背景 android平台下OpenGL ES 3.0绘 ...

  3. android opengl es 粒子效果实例代码

    概述:粒子系统采用许多形状简单的微小粒子作为基本元素,用它们来表示不规则模糊物体,系统中的每个粒子都有各自的生命周期,我们可以管理它们从创建到消亡的时间,它们都要经历"产生".&q ...

  4. OpenGL ES简介(一)

    摘要: 概述 在聊Android的View渲染流程中,通常会有一个比较核心的步骤:通过OpeGL ES接口调用GPU接口通知GPU绘制图形.其完整的流程:UI对象---->CPU处理为多维图形, ...

  5. android平台下OpenGL ES 3.0绘制圆点、直线和三角形

    OpenGL ES 3.0学习实践 android平台下OpenGL ES 3.0从零开始 android平台下OpenGL ES 3.0绘制纯色背景 android平台下OpenGL ES 3.0绘 ...

  6. android平台下OpenGL ES 3.0从零开始

    OpenGL ES 3.0学习实践 android平台下OpenGL ES 3.0从零开始 android平台下OpenGL ES 3.0绘制纯色背景 android平台下OpenGL ES 3.0绘 ...

  7. android平台下OpenGL ES 3.0给图片添加黑白滤镜

    OpenGL ES 3.0学习实践 android平台下OpenGL ES 3.0从零开始 android平台下OpenGL ES 3.0绘制纯色背景 android平台下OpenGL ES 3.0绘 ...

  8. android平台下OpenGL ES 3.0绘制纯色背景

    OpenGL ES 3.0学习实践 android平台下OpenGL ES 3.0从零开始 android平台下OpenGL ES 3.0绘制纯色背景 android平台下OpenGL ES 3.0绘 ...

  9. 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绘 ...

最新文章

  1. JavaScript—— 前端编程语言
  2. 实战tcpdump看RST
  3. java实现文件名过滤器接口_Java使用文件过滤器FileFilter、FilenameFilter搜索文件
  4. 田志刚:企业知识管理与用户创造内容(UGC)
  5. ☆聊聊Spring系列_Index
  6. SUSE Linux启动过程执行脚本顺序
  7. maven项目调试debug错误Source not found.
  8. window覆盖导航栏
  9. MFC开发IM-第二十四篇、使用 acl 库针对 C++ 对象进行序列化及反序列编程
  10. c# 正则表达式对网页进行有效内容抽取
  11. win7 IE11下,无法通过Windows更新为其他微软产品获取更新
  12. cadence 617工艺库安装以及相关问题解决
  13. 云迁移实践:VMware虚拟机迁移到华为云
  14. 易语言制作计算软件简单步骤_ps软件制作一寸照,原来如此简单
  15. Navicat导出整个数据库
  16. protobuf 与 redis 的结合
  17. 叮!丰巢智能柜那些贴心服务的正确打开方式
  18. Inwook,Kong
  19. Amazon Review Dataset数据集介绍
  20. 让人感慨的21个故事

热门文章

  1. 在不了解这5种语言以后就可能永远要消失在世界上了
  2. 2个程序员街头卖唱,挽救了自己的秃头
  3. oracle 去除英文字母,请教:如何去掉字段中的所有标点符号(包括全角的和半角的)...
  4. 执行ios命令_MEDUZA:一款针对iOS应用程序的通用SSL解绑工具
  5. Flex学习笔记(2)——使用ActionScript脚本
  6. ocr oracle,Oracle RAC备份和恢复OCR-Oracle
  7. 卷积神经网络CNN(8)—— Pix2Pix Application -- Aerialmap Lane Line Detection (Pix2Pix应用:航拍图车道线检测)
  8. Adobe illustrator 删除干扰元素 - 连载 15
  9. 重磅预售 | 分子生物学与遗传学经典名著——《Lewin基因XII》(中译本)
  10. AE进度条读取动画插件 LoadUP 1.71