了解OpenGL ES

2021-04-06  本文已影响0人  辉辉岁月

OpenGL ES

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

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

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

OpenGL ES 图形管道

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

Apple官方图示

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

顶点着色器

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

image

顶点着色器处理的业务

顶点着色器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; 
}

图元装配、光栅化

片元着色器

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

image

片元着色器业务

片元着色器GLSL代码示例

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

总结

逐片段操作

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

OpenGL ES的应用

图片滤镜

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

EGL(Embedded Graphics Library)

上一篇下一篇

猜你喜欢

热点阅读