美文网首页
OpenGLES数据类型&语法&自定义顶点片元着色器(一)

OpenGLES数据类型&语法&自定义顶点片元着色器(一)

作者: 枫紫_6174 | 来源:发表于2020-07-28 12:02 被阅读0次

一.OpenGlES 版本

       1) OpenGL ES 1.X :针对固定功能流⽔管线硬件

        2)OpenGL ES 2.X :针对可编程流⽔管线硬件

        3)OpenGL ES 3.X :OpenGL ES 2.0的扩展

二.EGL (Embedded Graphics Library )

        特点:1)OpenGL ES 命令需要渲染上下⽂和绘制表⾯才能完成图形图像的绘制

                    2)渲染上下⽂: 存储相关OpenGL ES 状态. 

                    3)绘制表⾯: 是⽤于绘制图元的表⾯,它指定渲染所需要的缓存区类型,例如颜⾊缓存

区,深度缓冲区和模板缓存区

                    4)OpenGL ES API 并没有提供如何创建渲染上下⽂或者上下⽂如何连接到原⽣窗⼝系统. EGL 是Khronos 渲染API(如OpenGL ES) 和原⽣窗⼝系统之间的接⼝. 唯⼀⽀持OpenGL ES 却不⽀持EGL 的平台是iOS

        EGL的主要功能:

                    1)和本地窗⼝系统(native windowing system)通讯

                    2)查询可⽤的配置

                    3)创建OpenGL ES可⽤的“绘图表⾯”(drawing surface)

                    4)同步不同类别的API之间的渲染,⽐如在OpenGL ES和OpenVG之间同步,或者在OpenGL和本地窗⼝的绘图命令之间

                    5)管理“渲染资源”,⽐如纹理映射(rendering map)

三.向量数据类型。

数据类型

四.矩阵数据

矩阵数据类型

五.变量存储限定符

变量存储限定符

六.OpenGL ES 错误处理

                如果不正确使⽤OpenGL ES 命令,应⽤程序就会产⽣⼀个错误编码. 这个错误编码将被记录,可以⽤glGetError查询. 在

应⽤程序⽤glGetError查询第⼀个错误代码之前,不会记录其他错误代码. ⼀旦查询到错误代码,当前错误代码便复位为

GL_NO_ERROR

错误代码

七.简单实现一个顶点着色器片元着色器及参数说明

        OpenGL的渲染架构:

OpenGL渲染架构(图片来源于https://www.jianshu.com/p/6cc7574ff3d2)


参数类型作用

一个简单的顶点着色器:

                                        attribute  vec4  position;---->顶点坐标

                                        attribute  vec2  textCoordinate;---->纹理坐标

                                        varying   lowp  vec2  varyTextCoord;---->纹理坐标,用于传给片元着色器,注意一定要和片元着色器一摸一样,你可以把它理解成全局变量,先顶点着色器赋值,片元着色器直接用lowp/highp表示精度

                                        voidmain()    

                                                        {

                                                        varyTextCoord = textCoordinate;

                                                        gl_Position= position;--->gl_Position内建变量,用于存储顶点着色器计算后的顶点坐标

                                                        }

一个简单的片元着色器:

                                        precision highp float;

                                        varying   lowp  vec2   varyTextCoord;---->纹理坐标,注意和顶点着色器的一摸一样

                                        uniform sampler2D colorMap;----->采样器,存储纹理

                                        voidmain()

                                         {

                                    //lowp vec4 temp = texture2D(colorMap, varyTextCoord);

                                    //gl_FragColor = temp;

                                    gl_FragColor=texture2D(colorMap, varyTextCoord);

                                        }

相关文章

网友评论

      本文标题:OpenGLES数据类型&语法&自定义顶点片元着色器(一)

      本文链接:https://www.haomeiwen.com/subject/ffaxrktx.html