第1章 GLES简介

    技术2022-07-12  71

    OpenGL ES 3.0实现了具有可编程着色功能的图形管线,由两个规范组成:

    OpenGL ES 3.0  API规范 和 OpenGL ES着色器语言3.0规范(OpenGL ES SL)。

    顶点着色器示例:

    顶点着色器取得一个位置及相关的颜色数据作为输入属性,用一个4×4矩阵变换位置,并输出变换后的位置和颜色。

    #version 300 es uniform mat4 u_mvpMatrix;// matrix to convert a_position // from model space to normalized device space // attributes input to the vertex shader int vec4 a_position;// position value int vec4 a_color;// input vertex color // output of the vertex shader - input to fragment shader out vec4 v_color;// output vertex color void main() { v_color = a_color; gl_Position = u_mvpMatrix * a_position; }

    统一变量u_mvpMatrix,它存储组合的模型视图和投影矩阵。 顶点属性a_position是输入顶点位置属性,a_color是输入顶点颜色属性。 输出变量v_color,用于存储描述每个顶点颜色的顶点着色器属性。 内建变量gl_position是自动声明的,着色器必须将变换后的位置写入这个变量。 片段着色器的顶点有一个单一入口点,作为主函数main():     读入顶点属性输入a_color,并将其写入顶点输出颜色v_color。     变换后的顶点位置写入gl_Position输出。

    片段着色器示例:

    #version 300 es precision mediump float; int vec4 v_color; // input vertex color from vertex shader out vec4 fragColor; // output fragment color void main() { fragColor = v_color; }

    EGL:

    EGL是Khronos渲染API(如OpenGL ES)和原生窗口系统之间的接口;在实现OpenGL ES时,没有提供EGL的硬性需求。

    任何OpenGL ES应用程序都必须在开始渲染之前使用EGL执行如下任务:

    EGL API实现上述功能以及像电源管理、在一个进程中支持多个渲染上下文、在一个进程中跨渲染上下文共享对象(如纹理或者顶点缓冲区)这样的附加功能,并实现获得给定实现支持的EGL或者OpenGL ES扩展功能函数指针的机制。EGL规范最新版本是EGL 15。

     

    Processed: 0.010, SQL: 9