一、了解 OpenGL ES

2020-07-25  本文已影响0人  Style_月月

OpenGL + OpenGL ES +Metal 系列文章汇总

OpenGL ES

在本文中,主要讲述的是iOS中的OpenGL ES,OpenGL ES APIOpenGL ES Programming Guide

OpenGL ES渲染流程
下图出自苹果官方文档OpenGL ES as a Client-Server Architecture

OpenGL ES渲染流程

OpebGL ES的渲染主要分为两部分:CPU和GPU

OpenGL ES 图形管道

OpenGL ES 图形管道有以下两种图示,其中原理都是一致的,只是描述方式不同
图示一

图形管道-图示1

Apple官方图示

来自苹果官方文档OpenGL ES as a Graphics Pipeline

图形管道-苹果官方图示

顶点着色器

简单来说就是处理顶点的着色器程序,如图所示


顶点着色器输入-输出

顶点着色器处理的业务

顶点着色器GLSL代码示例

attribute vec4 position;
attribute vec2 textCoordinate; 
uniform mat4 rotateMatrix; 
varying lowp vec2 varyTextCoord; 
void main()
{
    varyTextCoord = textCoordinate;
    vec4 vPos = position;
    vPos = vPos * rotateMatrix;
    gl_Position = vPos; 
}

图元装配、光栅化

片元着色器

下图表示片元着色器中有哪些输入和输出


片元着色器输入-输出

片元着色器业务
- 计算颜色
- 获取纹理值
- 往像素点中填充颜色值(纹理值/颜色值)

片元着色器GLSL代码示例

varying lowp vec2 varyTextCoord; 
uniform sampler2D colorMap;
void main() {
gl_FragColor = texture2D(colorMap, varyTextCoord); }

总结

逐片段操作

这个过程都是GPU内部处理的,开发者并不需要关心,将处理好的数据存储到帧缓存区,最后读取帧缓存区将图形显示到屏幕上

OpenGL ES的应用

图片滤镜

视频滤镜
原理以及处理方式是一样的(GLSL代码),视频也是一帧一帧处理的,而一帧就是一张图片

EGL(Embedded Graphics Library)

上一篇下一篇

猜你喜欢

热点阅读