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

转载请注明出处

本文出自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官方资料

原文地址:https://www.cnblogs.com/hansion/p/8192229.html

时间: 2024-11-05 15:49:30

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

OpenGL ES教程系列(经典合集)

为了搞透播放器的开发,花了些时间收集这些资料,虽然我已经搞定opengles渲染视频的内容,但是想玩玩opengles,往深里玩,图像处理这块是个好的方向,所以opengles是值得好好学的. OpenGL ES教程原创系列 2011-12-18[iTyran原创]iPhone中OpenGL ES显示3DS MAX模型之二:lib3ds加载模型 2011-12-17[iTyran原创]GLKit 矩阵变换:自转公转 2011-12-02[iTyran原创]Xcode创建的默认iOS OpenGL

iOS开发-OpenGL ES入门教程1

http://www.jianshu.com/p/750fde1d8b6a 这里是一篇新手教程,环境是Xcode7+OpenGL ES 2.0,目标写一个OpenGL ES的hello world.OpenGL ES系列教程在这里.OpenGL ES系列教程的代码地址 你的star和fork是我的源动力,你的意见能让我走得更远. 核心思路 通过GLKit,尽量简单地实现把一张图片绘制到屏幕. 效果展示 具体细节 1.新建OpenGL ES上下文 - (void)setupConfig { //新

OpenGL ES总结(一)OpenGL 初识

转载请把头部出处链接和尾部二维码一起转载,本文出自逆流的鱼yuiop:http://blog.csdn.net/hejjunlin/article/details/61615215 OpenGL是在图形图像中,非常优秀的渲染库,文中Demo下载地址:https://github.com/hejunlin2013/OpenGL31,看下今天的Agenda: OpenGL是什么? OpenGL主要功能是什么? OpenGL ES是什么? Android中如何描述OpenGL ES版本 映射坐标绘制对

Android视频录制从不入门到入门系列教程(三)————视频方向

运行Android视频录制从不入门到入门系列教程(二)————显示视频图像中的Demo后,我们应该能发现视频的方向是错误的. 由于Android中,Camera给我们的视频图片的原始方向是下图这个样子的: 就是说,即使你是竖着拿手机的,Camera提供给你的视频图像的方向还是上图那样横着的图片. 我们可以通过下述方向改变Camera提供的视频图像的方法: camera.setDisplayOrientation(90); 让图像顺时针旋转90度,视频图像的方向就正常的. 本篇文章DEMO下载.

Android开发入门系列

<1>第一章:java简介- 掌握Java语言基础知识- 理解面向对象的编程思想- 运用Java编写简单的程序- 运用JDBC编写数据库访问程序 本章链接:http://pan.baidu.com/s/1i39OUO1 <2>第二章:Java语言基础      - 理解数据类型       - 掌握运算符       - 掌握数组       - 运用控制流语句 本章链接:(上)http://pan.baidu.com/s/1o6qHOQu(下)http://pan.baidu.c

RxJava入门系列四,Android中的响应式编程

RxJava入门系列四,Android中的响应式编程 在入门系列1,2,3中,我基本介绍了RxJava是如何使用的.但是作为一名Android开发人员,你怎么让RxJava能为你所用呢?这篇博客我将针对Android开发来介绍一下RxJava的使用场景. RxAndroid RxAndroid是为Android打造的RxJava扩展.通过RxAndroid可以让你的Android开发变得更轻松. 首先,RxAndroid中提供了AndroidSchedulers,你可以用它来切换Android线

《Android构建MVVM》系列(一) 之 MVVM架构快速入门

前言 本文属于<Android构建MVVM>系列开篇,共六个篇章,详见目录树. 该系列文章旨在为Android的开发者入门MVVM架构,掌握其基本开发模式. 辅以讲解Android Architecture Components,使得更好的实现MVVM架构. 目录树 <Android构建MVVM>系列(一) 之 MVVM架构快速入门 前言 分层思想 什么是MVC/MVP? MVVM是什么,与MVC/MVP有何区别? Android Architecture Components(架

OpenGL学习入门(0)

大概一个月前开始学习OpenGL,在网上找了很多OpenGL学习资料,大都看得一头雾水,什么管线.着色器.变换矩阵.视窗.视口等等概念完全不懂啊. 然后去看了计算机图形学,算是对图形学有了一个基本的认识.很多人会推荐<OpenGL编程指南>和<OpenGL超级宝典>,俗称的红宝书和蓝宝书,但我感觉对新手并不友好啊,于是找了本<OpenGL编程基础-第三版>,该书可能比较老旧,且不全面,但并作为OpenGL的入门书籍我感觉足够了. 链接:https://pan.baidu

Cocos2d-x创建android项目(cocos2d-x系列三)

不例外.最显眼的就是,在文件的根目录中增加了一个名为setup.py的配置文件.运行它可以配置系统的一些环境变量. 2.创建项目 新的版本我们来动手创建一个新项目吧.找到tools文件夹....额 打包的那个名为create-project.py的文件似乎木有了!原来,在新版本中,创建新项目已经可以通过命令行来创建了,相对于先前版本的图形界面,命令行更简洁.我们要在setup.py中设置参数.以mac平台为例,我们进入到对应目录,运行脚本setup.py: Setting up cocos2d-