代码如下:

1、RotateOpenglActivity  类为Activity类

import android.app.Activity;
import android.opengl.GLSurfaceView;
import android.os.Bundle;public class RotateOpenglActivity extends Activity {RotateRender rotateRender = new RotateRender();@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);GLSurfaceView gView = new GLSurfaceView(this);gView.setRenderer(rotateRender);setContentView(gView);}
}

2、渲染类 RotateRender

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 RotateRender implements Renderer {static int one = 0x10000;private static IntBuffer trangleBuffer;private static IntBuffer squreBuffer;private float mTraRotate = 0.0f;private float mSquRotate = 0.0f;//三角形顶点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};@Overridepublic void onDrawFrame(GL10 gl) {//清除颜色和深度缓存,并重置gl.glClear(GL10.GL_COLOR_BUFFER_BIT | GL10.GL_DEPTH_BUFFER_BIT);gl.glLoadIdentity();//设置颜色gl.glColor4f(0.5f, 0.3f, 0.5f, 1.0f);//设置缓冲ByteBuffer tranBuffer = ByteBuffer.allocateDirect(vertices.length * 4);tranBuffer.order(ByteOrder.nativeOrder());trangleBuffer = tranBuffer.asIntBuffer();trangleBuffer.put(vertices);trangleBuffer.position(0);ByteBuffer squBuffer = ByteBuffer.allocateDirect(squres.length * 4);squBuffer.order(ByteOrder.nativeOrder());squreBuffer = squBuffer.asIntBuffer();squreBuffer.put(squres);squreBuffer.position(0);//开始绘制三角形gl.glClear(GL10.GL_COLOR_BUFFER_BIT | GL10.GL_DEPTH_BUFFER_BIT);gl.glLoadIdentity();//允许设置顶点和颜色gl.glEnableClientState(GL10.GL_VERTEX_ARRAY);gl.glTranslatef(-1.5f, 0, -6.0f);gl.glRotatef(mTraRotate, 0.0f, 1.0f, 0.0f);//设置三角形并绘制gl.glVertexPointer(3, GL10.GL_FIXED, 0, trangleBuffer);gl.glDrawArrays(GL10.GL_TRIANGLES, 0, 3);//结束三角形gl.glFinish();//重置观察矩阵模型gl.glLoadIdentity();gl.glTranslatef(1.5f, 0.0f, -6.0f);gl.glRotatef(mSquRotate, 1.0f, 0.0f, 0.0f);gl.glVertexPointer(3, GL10.GL_FIXED, 0, squreBuffer);gl.glDrawArrays(GL10.GL_TRIANGLE_STRIP, 0, 4);gl.glDisableClientState(GL10.GL_VERTEX_ARRAY);mTraRotate += 0.5f;mSquRotate += 0.5f;}@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.glFrustumf(-ratio, ratio, -1, 1, 1, 10);//选择模型观察矩阵gl.glMatrixMode(GL10.GL_MODELVIEW);gl.glLoadIdentity();}@Overridepublic void onSurfaceCreated(GL10 gl, EGLConfig config) {//启用平滑阴影gl.glShadeModel(GL10.GL_SMOOTH);//黑屏gl.glClearColor(0, 0, 0, 0);//设置深度测试的模型gl.glDepthFunc(GL10.GL_LEQUAL);//启用深度模型gl.glEnable(GL10.GL_DEPTH_TEST);gl.glHint(GL10.GL_PERSPECTIVE_CORRECTION_HINT, GL10.GL_FASTEST);}}

3、效果图如下:

opengl es 实现旋转的三角形相关推荐

  1. 安卓学习笔记38:利用OpenGL ES绘制旋转立方体

    文章目录 零.学习目标 一.绘制图形基本步骤 二.绘制旋转立方体 (一)运行效果 (二)实现步骤 1.创建安卓应用[DrawRotatingCube] 2.建模:立方体类 - Cube 3.渲染:立方 ...

  2. OpenGL ES for Android 绘制立方体

    立方体有6个面,8个顶点,因此绘制立方体其实就是绘制6个面. 顶点shader attribute vec4 a_Position; attribute vec4 a_color; varying v ...

  3. OpenGL ES 加载3D模型

    前面绘制的矩形.立方体确实确实让人看烦了,并且实际生活中的物体是非常复杂的,我们不可能像前面哪样指定顶点来绘制,因此本篇博客就说明通过OpenGL ES加载一个3D模型.这样复杂物体的设计工作就可以交 ...

  4. OpenGL ES for Android 绘制旋转的地球

    No 图 No Code,我们先来欣赏下旋转的地球: 是不是很酷炫,要想绘制出上面酷炫的效果需要3个步骤: 计算球体顶点数据 地球纹理贴图 通过MVP矩阵旋转地球 计算球体顶点数据 我们知道OpenG ...

  5. iOS OpenGL ES 旋转立方体

    思路 立方体有6个面,由于OpenGL es的特性,每个面只能有两个三角形组成,一个三角形有三个顶点,在不考虑使用顶点索引的情况下,一共需要36个顶点 立方体,需要开启深度测试和光源着色器 旋转立方体 ...

  6. Android使用OpenGL ES 3.0实现随手指旋转3D立方体

    OpenGL ES在做普通应用方面3D使用的不多,但有时候实现一些有趣的功能也是蛮不错的.画立方体的的demo网上已经很多了,这次我们就实现一个随手指旋转的立方体,这个demo基本可以了解各个坐标系转 ...

  7. Android OpenGL ES(十)绘制三角形Triangle .

    三角形为OpenGL ES支持的面,同样创建一个DrawTriangle Activity,定义6个顶点使用三种不同模式来绘制三角形: float vertexArray[] = {-0.8f, -0 ...

  8. viewpager初始化fragment没有绘制_NDK OpenGL ES渲染系列 之 绘制三角形

    前言 新的知识学习都是循序渐进的,从基础到复杂.前面OpenGL ES概念 已经介绍了OpenGL ES的相关概念,这篇文章开始我们就正式开始OpenGL ES渲染系列第一站---绘制三角形.绘制三角 ...

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

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

最新文章

  1. R语言data.table导入数据实战:data.table生成新的数据列(基于已有数据列)、生成多个数据列
  2. webpack打包转换es6_webpack(二)解析es6并打包
  3. C 语言编程 — Makefile
  4. linux怎么命令设置网络连接,Linux网络操作命令
  5. python编程基础_月隐学python第一课
  6. linux任务计划详解
  7. 2010年一月份兑换公告
  8. android——GestureDetector.OnGestureListener 手势详解
  9. 凸优化第五章对偶 5.7 例子
  10. 微信小程序UI组件库集合(个人收藏)
  11. 利用tcp协议实现大文件传输(socket)
  12. 如何关闭迅雷极速版的升级提示
  13. android路由器,Android工程师面试该怎么准备?年薪50W
  14. iOS高仿微信项目、阴影圆角渐变色效果、卡片动画、波浪动画、路由框架等源码
  15. 首涂[A020]第二十套模板最终版 苹果CMS V10
  16. Mac运行已安装软件提示“XXX 已损坏,打不开。移到废纸篓/推出磁盘映像。”解决方法
  17. python从键盘输入10个整数算出奇数偶数的和_画出流程图,并编程实现: 从键盘上输入10个整数型的数值,分别统计奇数和偶数的个数。_概率论与数理统计答案_学小易找答案...
  18. Linux不用root权限安装nvcc
  19. python实时显示图片_任何显示来自Cam的实时图像的快速Python GUI
  20. android安全模式

热门文章

  1. 亲密接触VC6.0编译器
  2. 37岁程序员被裁员,面试华为阿里被拒,无奈降薪去小公司,结局出乎意料!
  3. php scandir遍历,php使用scandir()函数扫描指定目录下所有文件示例
  4. 这个统一了238个机器学习模型R包的参考手册推荐给你
  5. 生信学习学的是什么?常识!
  6. python装饰器由浅入深_详解Python装饰器由浅入深
  7. 4.2 算法之数论 185 反正切函数的应用 scratch
  8. 第29课 布纳特老师出的难题 《小学生C++趣味编程》
  9. 查看此docker网络连接模式_Docker:网络模式详解
  10. latex附录中放python代码_在Latex中插入Python代码