Android OpenGL ES 入门系列(一) --- 了解OpenGL ES的前世今生

摘要:
GLSurfaceView:它是一个视图,可用于使用OpenGL API调用绘制和操纵对象。其功能类似于SurfaceView。必须提供单独的类来实现此接口,并使用GLSurfaceView SetRenderer()将其附加到GLSurfaceView实例。在这种方法中,我们执行一些只需要执行一次的操作,例如设置OpenGL环境参数或初始化OpenGL绘图对象。OnSurfaceChanged():当GLSurfaceView的大小或设备屏幕方向改变时,系统调用此方法。OpenGL坐标的原点位于屏幕中央,左右坐标范围为[-1,1]参考:OpenGLES官方信息

 

转载请注明出处

本文出自Hansion的博客

OpenGL ES (OpenGL for Embedded Systems)

        是 OpenGL 三维图形 API 的子集,针对手机、PDA和游戏主机等嵌入式设备而设计,主要用来开发3D图形应用

Android支持以下几个版本的OpenGL ES API:

        OpenGL ES 1.0和1.1      支持Android 1.0及更高版本

        OpenGL ES 2.0               支持Android 2.2(API级别8)及更高版本

        OpenGL ES 3.0               支持Android 4.3(API级别18)及更高版本

        OpenGL ES 3.1               支持Android 5.1(API级别21)及更高版本

注意不要将OpenGL ES 1.x API调用与OpenGL ES 2.0方法混合使用,因为其API不可互换。

 

 

在Android框架中有两个基础类:GLSurfaceView和GLSurfaceView.Renderer,它们允许您使用OpenGL ES API创建和操作图形。

GLSurfaceView:

        是一个可以使用OpenGL API调用来绘制和操作对象的View,功能上类似于SurfaceView。

        可以通过创建一个GLSurfaceView的实例并添加渲染器来使用它。

GLSurfaceView.Renderer:

        该接口定义了在GLSurfaceView中绘制图形所需的方法。

        必须提供单独的类实现此接口,并使用GLSurfaceView.setRenderer()将其附加到GLSurfaceView实例。

        它必须实现以下几个方法:

                onSurfaceCreated(): 系统会在创建GLSurfaceView时调用一次该方法。我们在此方法中做一些只需执行一次的操作,如设置OpenGL环境参数或初始化OpenGL图形对象。

                onDrawFrame(): 系统在每次重绘GLSurfaceView时调用此方法。此方法用于绘制(和重新绘制)图形对象。

                onSurfaceChanged(): 当GLSurfaceView的大小或设备屏幕方向发生变化时,系统调用此方法。例如,当设备从纵向变为横向时,系统调用此方法。

在Android上Opengl是通过Vertex Shader (定点着色器)和 Fragment Shader (片段着色器)这两种定点着色器程序来实现图片的加载和渲染的

顶点着色器的作用是为每一个顶点生成坐标,因此每个顶点都要运行一遍顶点着色器程序,一旦顶点坐标计算出来之后,OpenGL就能够使用这些顶点来组成点,线,和三角形。所有任意的图形都是由这三种基本元素来描述的。

片段着色器的作用是为点,线或者三角形的每一个顶点的片段(Fragment)生成渲染后的最终颜色。片段就是一个小的单色矩形区域,可以简单的认为是屏幕上的一个像素点。

OpenGL坐标原点在屏幕中央,左右坐标范围为[-1,1]

 

 

参考:

 OpenGL ES官方资料

免责声明:文章转载自《Android OpenGL ES 入门系列(一) --- 了解OpenGL ES的前世今生》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇替换字符串中多个空格为一个空格OpenTSDB-Writing Data下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

如何在Windows下搭建Android开发环境

Android SDK 2.2 开发环境搭建 (1) 安装必备。(以下为Android开发中必备的软件与工具)1.1 安装jdk。Android目前支持以下jdk版本:jdk1.5,jdk1.6如果未安装可以到官方下载:http://www.oracle.com/technetwork/java/javase/downloads/index.html下载...

android 原生应用、Web应用、混合应用优缺点分析

近期开发几个项目,牵涉到android的几种开发模式。对于原生态开发、web 应用开发以及混合模式开发,本人觉得并非哪一种就是最好的,哪一种就是最差的,这个全然是依据项目的实际需求,选择一种合适的开发模式。他们同一时候具备自己的长处,同一时候也有自身的缺点,我们依据实际情况,取当中的长处,尽量避免掉缺点,才是最好的开发模式。以下,我们就一同看看,这三种开...

在Android应用中使用OpenGL

Android为OpenGL  ES支持提供了GLSurfaceView组件,这个组件用于显示3D图形。GLSurfaceView本身并不提供绘制3D图形的功能,而是由GLSurfaceView.Renderer来完成了SurfaceView中3D图形的绘制。 归纳起来,在Android中使用OpenGL  ES需要三个步骤: 1、创建GLSurfaceV...

10个经典的Android开源项目(附源码包)

      最近在抽空学习Android系统开发,对Android学习也比较感兴趣,刚开始学就试着在网上找几个项目源码研究看下,以下就将找到的Android项目源码列出,希望对正在或准备学习Android系统开发开发的能有些帮助!       1、Android团队提供的示例项目  如果不是从学习Android SDK中提供的那些样例代码开始,可能没有更好...

第86章、系统服务之TELEPHONY_SERVICE(从零开始学Android)

TelephonyManager类主要提供了一系列用于访问与手机通讯相关的状态和信息的get方法。其中包括手机SIM的状态和信息、电信网络的状态及手机用户的信息。在应用程序中可以使用这些get方法获取相关数据。     TelephonyManager类的对象可以通过Context.getSystemService(Context.TELEPHONY_S...

cocos2dx开发入门文档

注:该文部分来自子龙山人博客。   一、 配置好android开发环境   二、安装VS2010   三、安装NDK   NDK可以让Android程序的部分代码用C/C++实现,为后面安装Cocos2D-x做准备。将压缩包解压到一个不包括空格的路径即可。例如“E:cocos2d-xandroid-ndk-r8b”   四、安装Cygwin   下载地址...