浏览代码

libobs-opengl: Add error enum to string function

Kurt Kartaltepe 6 年之前
父节点
当前提交
16752c4bb4
共有 1 个文件被更改,包括 47 次插入2 次删除
  1. 47 2
      libobs-opengl/gl-helpers.h

+ 47 - 2
libobs-opengl/gl-helpers.h

@@ -17,6 +17,50 @@
 
 #pragma once
 
+static char *gl_error_to_str(GLenum errorcode)
+{
+	static void *err_to_str[][2] = {
+		{
+			GL_INVALID_ENUM,
+			"GL_INVALID_ENUM",
+		},
+		{
+			GL_INVALID_VALUE,
+			"GL_INVALID_VALUE",
+		},
+		{
+			GL_INVALID_OPERATION,
+			"GL_INVALID_OPERATION",
+		},
+		{
+			GL_INVALID_FRAMEBUFFER_OPERATION,
+			"GL_INVALID_FRAMEBUFFER_OPERATION",
+		},
+		{
+			GL_OUT_OF_MEMORY,
+			"GL_OUT_OF_MEMORY",
+		},
+		{
+			GL_STACK_UNDERFLOW,
+			"GL_STACK_UNDERFLOW",
+		},
+		{
+			GL_STACK_OVERFLOW,
+			"GL_STACK_OVERFLOW",
+		},
+		{
+			NULL,
+			"Unknown",
+		},
+	};
+	int i = 0;
+	while ((GLenum)err_to_str[i][0] != errorcode ||
+	       err_to_str[i][0] == NULL) {
+		i += 2;
+	}
+	return err_to_str[i][1];
+}
+
 /*
  * Okay, so GL error handling is..  unclean to work with.  I don't want
  * to have to keep typing out the same stuff over and over again do I'll just
@@ -28,8 +72,9 @@ static inline bool gl_success(const char *funcname)
 	GLenum errorcode = glGetError();
 	if (errorcode != GL_NO_ERROR) {
 		do {
-			blog(LOG_ERROR, "%s failed, glGetError returned 0x%X",
-			     funcname, errorcode);
+			blog(LOG_ERROR,
+			     "%s failed, glGetError returned %s(0x%X)",
+			     funcname, gl_error_to_str(errorcode), errorcode);
 			errorcode = glGetError();
 		} while (errorcode != GL_NO_ERROR);
 		return false;