本教程及后续教程全部参考或者转载于:OpenGL ES Tutorial for Android

本例相当于openGL的HelloWorld程序。

先贴代码,代码中的注释比较具体了。

主Activity类:

package seven.demo.openglhelloworld;import android.app.Activity;
import android.opengl.GLSurfaceView;
import android.os.Bundle;
import android.view.Menu;public class OpenGLDemo extends Activity {@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);GLSurfaceView view = new GLSurfaceView(this);view.setRenderer(new OpenGLRenderer());setContentView(view);}@Overridepublic boolean onCreateOptionsMenu(Menu menu) {getMenuInflater().inflate(R.menu.activity_open_gldemo, menu);return true;}
}

OpenGLRenderer类,实现Renderer接口:

package seven.demo.openglhelloworld;import javax.microedition.khronos.egl.EGLConfig;
import javax.microedition.khronos.opengles.GL10;import android.opengl.GLSurfaceView.Renderer;
import android.opengl.GLU;/*** 类描述: 功能详细描述:* * @author mengsifan* @date [2012-8-29]*/
public class OpenGLRenderer implements Renderer {/*** {@inheritDoc} 在这个方法中主要用来设置一些绘制时不常变化的参数,比如:背景色,是否打开 z-buffer等。*/@Overridepublic void onSurfaceCreated(GL10 gl, EGLConfig config) {// 设置背景色
        gl.glClearColor(.0f, .0f, .0f, .5f);/** 设置着色模式。参数mode可以是GL_SMOOTH(默认值)或GL_FLAT。* 采用恒定着色时(即GL_FLAT),使用图元中某个顶点的颜色来渲染整个图元。*/gl.glShadeModel(GL10.GL_SMOOTH);// Depth buffer setup.gl.glClearDepthf(1.0f);// Enables depth testing.
        gl.glEnable(GL10.GL_DEPTH_TEST);// The type of depth testing to do.
        gl.glDepthFunc(GL10.GL_LEQUAL);// Really nice perspective calculations.
        gl.glHint(GL10.GL_PERSPECTIVE_CORRECTION_HINT, GL10.GL_NICEST);}/*** {@inheritDoc} 如果设备支持屏幕横向和纵向切换,这个方法将发生在横向<->纵向互换时。此时可以重新设置绘制的纵横比率。*/@Overridepublic void onSurfaceChanged(GL10 gl, int width, int height) {/** glViewport(GLint x,GLint y,GLsizei width,GLsizei height)为其函数原型。* X,Y————以像素为单位,指定了视口的左下角位置。* width,height————表示这个视口矩形的宽度和高度,根据窗口的实时变化重绘窗口。*/gl.glViewport(0, 0, width, height);/** glMatrixMode设置当前矩阵模式 :* GL_MODELVIEW:对模型视景矩阵堆栈应用随后的矩阵操作。* GL_PROJECTION:对投影矩阵应用随后的矩阵操作。  * GL_TEXTURE:对纹理矩阵堆栈应用随后的矩阵操作。* 注意:与glLoadIdentity()一同使用。*/gl.glMatrixMode(GL10.GL_PROJECTION);// 重置当前指定的矩阵为单位矩阵
        gl.glLoadIdentity();// 计算窗口宽高比例GLU.gluPerspective(gl, 45.0f, (float) width / (float) height, 0.1f,100.0f);gl.glMatrixMode(GL10.GL_MODELVIEW);gl.glLoadIdentity();}/*** {@inheritDoc} 定义实际的绘图操作。*/@Overridepublic void onDrawFrame(GL10 gl) {/** 可以使用 "|"运算符组合不同的缓冲标志位,表明需要清除的缓冲。 例如glClear(GL_COLOR_BUFFER_BIT |* GL_DEPTH_BUFFER_BIT)表示要清除颜色缓冲以及深度缓冲。*/gl.glClear(GL10.GL_COLOR_BUFFER_BIT | GL10.GL_DEPTH_BUFFER_BIT);}}

转载于:https://www.cnblogs.com/sifan/archive/2012/08/29/2661919.html

【Android】OpenGL ES for Android 教程1 - HelloWorld相关推荐

  1. OpenGl文章 Android OpenGL ES 简明开发教程

    Android OpenGL ES 简明开发教程 分类:android学习笔记2011-12-14 15:04375人阅读评论(0)收藏举报 ApiDemos 的Graphics示例中含有OpenGL ...

  2. android opengl流程,【Android OpenGL ES】Android Opengl ES创建流程

    在android 1.0rc2 sdk中,提供了以下包支持Opengl ES 编程: 一.openglES包 android.opengl Class: GLDebugHelper:用于调试OpenG ...

  3. Android OpenGL ES 开发教程(20):颜色Color

    OpenGL ES 支持的颜色格式为RGBA模式(红,绿,蓝,透明度).颜色的定义通常使用Hex格式0xFF00FF 或十进制格式(255,0,255), 在OpenGL 中却是使用0-1之间的浮点数 ...

  4. Android OpenGL ES 从入门到精通系统性学习教程

    1 为什么要写这个教程 目前这个 OpenGL ES 极简教程的更新暂时告一段落,在此之前,很荣幸获得了阮一峰老师的推荐. 因为在工作中频繁使用 OpenGL ES 做一些特效.滤镜之类的效果,加上平 ...

  5. Android OpenGL ES 开发教程(16):Viewing和Modeling(MODELVIEW) 变换

    Viewing和Modeling 变换关系紧密,对应到相机拍照为放置三角架和调整被拍物体位置及角度,通常将这两个变换使用一个modelview 变换矩阵来定义.对于同一个坐标变换,可以使用不同的方法来 ...

  6. Android OpenGL ES 2.0 屏幕坐标和3D世界坐标转换

    Android OpenGL ES 2.0 屏幕坐标和3D世界坐标转换 查看全文 http://www.taodudu.cc/news/show-6705596.html 相关文章: word中如何加 ...

  7. Android OpenGL ES 学习(十一) –渲染YUV视频以及视频抖音特效

    OpenGL 学习教程 Android OpenGL ES 学习(一) – 基本概念 Android OpenGL ES 学习(二) – 图形渲染管线和GLSL Android OpenGL ES 学 ...

  8. Android OpenGL ES 画出三棱锥

    如今VR这么火,感觉有必要学学OpenGL.什么是OpenGL ES ,OpenGL ES (OpenGL for Embedded System ) 为适用于嵌入式系统的一个免费二维和三维图形库.O ...

  9. Android OpenGL ES 学习(二) -- 图形渲染管线和GLSL

    OpenGL 学习教程 Android OpenGL ES 学习(一) – 基本概念 Android OpenGL ES 学习(二) – 图形渲染管线和GLSL Android OpenGL ES 学 ...

最新文章

  1. 通达信四色谱四量图源码_翔博精选指标熊市专用优化(通达信公式 选股 源码 测试图)...
  2. android dimensions.xml,[Android Studio #2] 操作資源XML檔
  3. Django 应用开发(2)
  4. 25岁,在一个需要工作的周末……
  5. 第三方应用如何在SAP Kyma上进行服务注册
  6. Flutter开发之实现沉浸式状态栏的效果
  7. 查表法实现反正切_关于python实现CRC32的应用和总结
  8. Replace Data Value with Object(以对象取代数据值)
  9. 【动态规划】魔法石矿
  10. HDU 4027 Can you answer these queries?(线段树/区间不等更新)
  11. Leetcode每日一题:121.best-time-to-buy-and-sell-stock(买股票的最佳时机)
  12. 【MVC+MySQL+EntityFramework】查询性能优化笔记
  13. 数学建模之预测模型简要分析
  14. 毕业设计任务书----基于Android的学生考勤管理系统设计与实现
  15. 计算机汇编语言调试报告心得,汇编语言实习心得
  16. 利用Mac给台式机装Windows系统
  17. long 型应该加上 l或者L
  18. 什么是链路追踪?分布式系统如何实现链路追踪?
  19. java入门—第二节(1)(数据类型)
  20. 不借助编辑器自带的代码高亮工具(Syntaxhighlighte),生成完美格式的语法高亮代码

热门文章

  1. 我的Java开发之路
  2. js控制文本框仅仅能输入中文、英文、数字与指定特殊符号
  3. Impala与Hive的比较
  4. Hibernate 统计记录总数方法汇总
  5. c# WINFORM SOCKET编程-简单聊天程序(服务端)
  6. .NET Compact Framework 2.0 SP2 for Platform Builder (4.2, 5.0, 6.0)
  7. js循环解析html标签,riot.js教程【六】循环、HTML元素标签
  8. 在dos下用csc命令编译,提示“csc不是内部或外部命令,也不是可运行的程序... ”
  9. 关于MongoDB数据库的总结
  10. 转载:如何优雅的实现INotifyPropertyChanged接口