OpenGL

2019-11-03  本文已影响0人  Damon_He

什么是OpenGL

Open Graphics Library
图形领域的工业标准,是一套跨编程语言、跨平台的、专业的图形编程(软件)接口。它用于二维、三维图像,是一个功能强大,调用方便的底层图形库。

与硬件无关。可以在不同的平台如Windows、Linux、Mac、Android、IOS之间进行移植。因此,支持OpenGL的软件具有很好的移植性,可以获得非常广泛的应用。

OpenGL ES 1.0 和 1.1 :Android 1.0和更高的版本支持这个API规范。
OpenGL ES 2.0 :Android 2.2(API 8)和更高的版本支持这个API规范。�
OpenGL ES 3.0 :Android 4.3(API 18)和更高的版本支持这个API规范。
OpenGL ES 3.1 :Android 5.0(API 21)和更高的版本支持这个API规范。

还须要由设备制造商提供了实现支持, 目前广泛支持的是 2.0
<uses-feature android:glEsVersion="0x00020000" android:required="true"/>

Android OpenGL ES

针对手机、PDA和游戏主机等嵌入式设备而设计的OpenGL API 子集。

继承至SurfaceView,它内嵌的surface专门负责OpenGL渲染。
管理Surface与EGL
允许自定义渲染器(render)。
让渲染器在独立的线程里运作,和UI线程分离。
支持按需渲染(on-demand)和连续渲染(continuous)。

OpenGL绘制流程

opengl绘制流程.png

OpenGL可编程管线

可编程管线.jpg

坐标系(重点)

OpenGL世界坐标系

opengl世界坐标系.png

OpenGL纹理坐标系

OpenGL纹理坐标系.png

Android屏幕坐标系

Android屏幕坐标系.png

Shader着色器(重点)

着色器(Shader)是运行在GPU上的小程序。

GLSL

OpenGL着色语言(OpenGL Shading Language)


glsl.png

数据类型

类型 描述
float 浮点型
vec2 含两个浮点型数据的向量
vec4 含四个浮点型数据的向量(xyzw,rgba,stpq)
sampler2D 2D纹理采样器(代表一层纹理)

修饰符

类型 描述
attribute 属性变量。只能用于顶点着色器中。一般用该变量来表示一些顶点数据,如:顶点坐标、纹理坐标、颜色等。
uniforms 一致变量。在着色器执行期间一致变量的值是不变的。与const常量不同的是,这个值在编译时期是未知的是由着色器外部初始化的。
varying 易变变量。是从顶点着色器传递到片元着色器的数据变量。

内建函数

texture2D (采样器, 坐标) 采样指定位置的纹理。

内建变量

变量 描述
gl_Position vec4类型,表示顶点着色器中顶点位置
gl_FragColor vec4类型,表示片元着色器中颜色

其他

名称 描述
precision lowp 低精度
precision mediump 中精度
precision highp 高精度
上一篇下一篇

猜你喜欢

热点阅读