EGL以及OpenGLES命令

作者: cain_huang | 来源:发表于2017-06-03 23:51 被阅读186次

    OpenGLES命令需要渲染上下文和绘制表面。渲染上下文存储相关的OpenGLES 状态。绘制表面时用于绘制图元的表面,它指定渲染所需要的缓冲区类型。绘制表面还需要制定所需要的缓冲区的位深度。

    EGL是Khronos渲染API与原生窗口系统之间的接口。iOS支持OpenGLES但不支持EGL。

    OpenGLES应用程序必须在渲染之前私用EGL执行以下任务:

    查询并初始化设备可用的显示器。

    创建渲染表面。

    创建渲染上下文。

    库和包含文件

    库:libGLESv2.lib 和EGL库libEGL.lib

    头文件:

    #include <EGL/egl.h>

     #include <GLES3/gl3.h>

    选择性包含 #include <GLES3/gl2ext.h>,这里是扩展列表的头文件

    EGL命令语法

    所有命令都以egl开头,每个单词首字母大写

    数据类型:

    32位整数 —— EGLint

    32位无符号整数 —— EGLenum、EGLBoolean

    指针 —— EGLConfig、EGLContext、EGLDisplay、EGLSurface、EGLClientBuffer

    OpenGLES命令语法

    所有命令以gl开头,每个单词首字母大写

    有些命令可能采用不同风格的参数。风格活着类型根据采用的参数数量、参数使用的数据类型(字节b,无符号字节ub,短整数s,无符号短整数us,整数i,浮点数f)以及参数是否以向量v形式传递而各不相同。

    错误处理:

    GLenum glGetError(void)

    基本错误代码:

    GL_NO_ERROR    没有任何错误

    GL_INVALID_ENUM 超出GLenum范围

    GL_INVALID_VALUE 数值型参数超出范围。

    GL_INVALID_OPERATION 特定命令在当前OpenGLES状态下不能执行。

    GL_OUT_OF_MEMORY 内存不足时执行该命令。未定义?

    基本状态管理:

    void glEnable(GLenum cap)

    void glDisable(GLenum cap)

    cap:

    GL_BLEND

    GL_CULL_FACE

    GL_DEPTH_TEST

    GL_DITHER

    GL_POLYGON_OFFSET_FILL

    GL_PRIMITIVE_RESTART_FIXED_INDEX

    GL_RASTERIZER_DISCARD

    GL_SAMPLE_ALPHA_TO_COVERAGE

    GL_SAMPLE_COVERAGE

    GL_SCISSOR_TEST

    GL_STENCIL_TEST

    检查某个状态目前启用还是禁用

    GLboolean glIsEnable(GLenum cap)

    相关文章

      网友评论

        本文标题:EGL以及OpenGLES命令

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