OpenGL ES glGetError 函数

ChatGPT 3.5 国内中文镜像站免费使用啦

零基础 OpenGL ES 学习路线推荐 : OpenGL ES 学习目录 >> OpenGL ES 基础

零基础 OpenGL ES 学习路线推荐 : OpenGL ES 学习目录  >> OpenGL ES 特效

零基础 OpenGL ES 学习路线推荐 : OpenGL ES 学习目录  >> OpenGL ES 转场

零基础 OpenGL ES 学习路线推荐 :  OpenGL ES 学习目录 >> OpenGL ES 函数

零基础 OpenGL ES 学习路线推荐 :  OpenGL ES 学习目录 >> OpenGL ES GPUImage 使用

零基础 OpenGL ES 学习路线推荐 :  OpenGL ES 学习目录 >> OpenGL ES GLSL 编程


一.glGetError 函数简介

glGetError OpenGL ES 中一个非常重要的函数,用于获取当前 OpenGL ES 状态机中最近发生错误代码。它没有任何参数,只需调用即可。 其声明如下:

/*******************************************************************************************/
//@Author:猿说编程
//@Blog(个人博客地址): www.codersrc.com
//@File:OpenGL ES glGetError 函数
//@Time:2023/03/11 08:00
//@Motto:不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
/*******************************************************************************************/


/*
*描述:用于获取当前 OpenGL ES 状态机中最近发生错误代码
*
*返回值: OpenGL ES 上下文中最近一次错误的错误代码。如果没有错误,则返回 GL_NO_ERROR。
*/

GLenum glGetError(void);

该函数返回一个 GLenum 类型值,表示最近一次错误代码。如果在上一次调用 glGetError 后未发生任何错误,则该函数将返回 GL_NO_ERROR


OpenGL ES 定义了多个可能出现的错误类型,每种类型都有对应的枚举值。例如:

  1. 1.GL_INVALID_ENUM:传入无效枚举参数
  2. 2.GL_INVALID_VALUE:传入无效数值参数
  3. 3.GL_INVALID_OPERATION:操作不合法
  4. 4.GL_OUT_OF_MEMORY:内存不足

二.glGetError 函数代码演示

/*******************************************************************************************/
//@Author:猿说编程
//@Blog(个人博客地址): www.codersrc.com
//@File:OpenGL ES glGetError 函数
//@Time:2023/03/11 08:00
//@Motto:不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
/*******************************************************************************************/


GLenum errorCode = glGetError();
if (errorCode != GL_NO_ERROR) {
    printf("OpenGL ES error: %d\n", errorCode);
}

使用 glGetError 函数获取错误代码并打印出来。


三.glGetError 函数注意事项

  1. 1.glGetError 应该在每一次 OpenGL ES 调用之后检查,以便及时发现并处理错误。
  2. 2.glGetError 会清除当前的错误状态,因此在调用 glGetError 之后,如果又发生了错误,需要再次调用 glGetError 才能获取到新的错误代码。
  3. 3.在开发过程中建议频繁地检查 glGetError 的返回值,并尽早处理出错情况。

四.glGetError 函数完整案例代码


/*******************************************************************************************/
//@Author:猿说编程
//@Blog(个人博客地址): www.codersrc.com
//@File:OpenGL ES glGetError 函数
//@Time:2023/03/11 08:00
//@Motto:不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
/*******************************************************************************************/


#include <stdio.h>
#include <stdlib.h>
#include <GLES3/gl3.h>

int main() {
    // 创建 OpenGL ES 上下文
    
    // 开启深度测试,并设置深度比较函数为 GL_LEQUAL
    glEnable(GL_DEPTH_TEST);
    glDepthFunc(GL_LEQUAL);

    // 检查是否有错误发生
    GLenum errorCode = glGetError();
    if (errorCode != GL_NO_ERROR) {
        printf("OpenGL ES error: %d\n", errorCode);
    }

    // 使用 OpenGL ES 绘制图形

    // 检查是否有错误发生
    errorCode = glGetError();
    if (errorCode != GL_NO_ERROR) {
        printf("OpenGL ES error: %d\n", errorCode);
    }

    // 销毁 OpenGL ES 上下文

    return 0;
}

五.glGetError 函数使用案例

1.IOS Object-C 版本

IOS Object-C 灰度图调节:源码下载

图片[1]-OpenGL ES glGetError 函数-猿说编程

2.Windows OpenGL ES 版本

Windows OpenGL ES 灰度图调节:源码下载

Windows OpenGL ES 图像灰度图

3.Windows OpenGL 版本

Windows OpenGL 灰度图调节:源码下载

Windows OpenGL 图像灰度图

4.QT MAC OpenGL 版本

QT MAC OpenGL 灰度图调节:源码下载

图片[4]-OpenGL ES glGetError 函数-猿说编程
ChatGPT 3.5 国内中文镜像站免费使用啦
© 版权声明
THE END
喜欢就支持一下吧
点赞12 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容