转载请注明出处

本文出自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

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

  1. 【Android Studio】入门系列 2.下载安装及初始化

    1. 下载 目前AS的最新正式版本是2.0预览版 下载地址(需要翻墙): developer.android.com/sdk/index.h- 不能翻墙的话可以选择国内网友提供的下载资源(更新还挺快的 ...

  2. 【Android Studio】入门系列 4.1.Coding 定位目标

    Coding的过程可以简单地划分为以下三个部分 定位目标(目标可能是类.方法.字段.布局.文件.新建文件等) 编写代码 编译&执行&调试&优化 本篇重点看一下第一部分.我们常用 ...

  3. OpenGL ES入门(使用指南)

    转载地址:https://www.ict528.com/wpozv3sz3srrtywpoq1qvuyqooqxz1usvwr2uqoo.html. OpenGL ES 入门 一.前言 OpenGL ...

  4. Android音视频学习系列(六) — 掌握视频基础知识并使用OpenGL ES 2.0渲染YUV数据

    系列文章 Android音视频学习系列(一) - JNI从入门到精通 Android音视频学习系列(二) - 交叉编译动态库.静态库的入门 Android音视频学习系列(三) - Shell脚本入门 ...

  5. Android OpenGL ES 学习(十二) - MediaCodec + OpenGL 解析H264视频+滤镜

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

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

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

  7. OpenGL ES 入门之旅--灰度,旋涡,马赛克滤镜

    前情提要 这篇滤镜效果的实现是在上一篇分屏滤镜的基础上来进行实现的,同样的前提是可以利用GLSL加载一张正常的图片. 详情请参考上一篇OpenGL ES 入门之旅--分屏滤镜 下面步入这篇的正题: 灰 ...

  8. OpenGL ES入门 基本概念篇

    前言 OpenGL是一种包含了一系列可以操作图形图像函数的图形编程接口的规范标准,它规范了每个函数该如何执行以及它们的输出值,OpenGL ES是OpenGL的一个精简子集,主要用于手持和嵌入式设备, ...

  9. Android音视频学习系列(五) — 掌握音频基础知识并使用AudioTrack、OpenSL ES渲染PCM数据

    系列文章 Android音视频学习系列(一) - JNI从入门到精通 Android音视频学习系列(二) - 交叉编译动态库.静态库的入门 Android音视频学习系列(三) - Shell脚本入门 ...

最新文章

  1. myeclipse中git的使用
  2. linux下git分支管理,git远程分支管理
  3. 经典C语言程序100例之八八
  4. 前端学习(2252)推送代码
  5. 数学公式难懂?动态图片来解答,孩子看一遍秒懂
  6. Spring : ImportBeanDefinitionRegistrar动态注入
  7. 单链表的顺序查找c语言,单链表(C语言)
  8. PX4板载计算机外部控制
  9. 在智能家居时代,你愿意用个人数据换取收益吗?
  10. 安装VMware时提示无效驱动器:D:\的解决办法
  11. Debian系统下在Qtcreator执行qml程序报:module “QtQuick“ is not installed
  12. java pkcs1转pkcs8_openssl生成RSA格式及pkcs1与pkcs8格式互相转换
  13. matlab求最值(极值)
  14. 微型计算机MC定义,mc是什么意思
  15. C语言 !! 的含义
  16. unity3d序列帧动画无法显示坑
  17. python之pandas初级使用案例(2)对数据的访问和操作
  18. shell的并行执行
  19. video标签 设置背景图片
  20. #ifdef _cplusplus(转)

热门文章

  1. WPF中的动画——(六)演示图板
  2. int整数型转换char*字符串
  3. PHP-数据库长连接mysql_pconnect的细节
  4. libpython3.7m so静态库_Linux下编译安装python3.7
  5. java redis设置过期时间_Redis的一些核心原理
  6. 豪斯荷尔德变换及变形QR算法对矩阵进行奇异值分解VB算法
  7. uiautomatorviewer_【问题】解决Android8.0以上运行不了uiautomatorviewer的办法
  8. OpenStack Pike Minimal安装:三、镜像管理
  9. 核显也能玩游戏,OS X Yosemite优化指南
  10. 用户体验分析:以 “师路南通网站” 为例