在 OpenGL ES 1.1 或 2.0 中是否有从glGetError()
(Android 和 iOS)和(Android)获取错误字符串的标准?eglGetError()
我正在使用这样的东西:
#define AssertGL(x) { x; GLenum __gle = glGetError(); Assert(__gle == GL_NO_ERROR); }
可以很好地增强它以向调试器提供文本,而不必手动查找 GLenum 中存储的返回值__gle
。
在 OpenGL ES 1.1 或 2.0 中是否有从glGetError()
(Android 和 iOS)和(Android)获取错误字符串的标准?eglGetError()
我正在使用这样的东西:
#define AssertGL(x) { x; GLenum __gle = glGetError(); Assert(__gle == GL_NO_ERROR); }
可以很好地增强它以向调试器提供文本,而不必手动查找 GLenum 中存储的返回值__gle
。
只需遵循规范,GL 是跨平台的:
char const* gl_error_string(GLenum const err) noexcept
{
switch (err)
{
// opengl 2 errors (8)
case GL_NO_ERROR:
return "GL_NO_ERROR";
case GL_INVALID_ENUM:
return "GL_INVALID_ENUM";
case GL_INVALID_VALUE:
return "GL_INVALID_VALUE";
case GL_INVALID_OPERATION:
return "GL_INVALID_OPERATION";
case GL_STACK_OVERFLOW:
return "GL_STACK_OVERFLOW";
case GL_STACK_UNDERFLOW:
return "GL_STACK_UNDERFLOW";
case GL_OUT_OF_MEMORY:
return "GL_OUT_OF_MEMORY";
case GL_TABLE_TOO_LARGE:
return "GL_TABLE_TOO_LARGE";
// opengl 3 errors (1)
case GL_INVALID_FRAMEBUFFER_OPERATION:
return "GL_INVALID_FRAMEBUFFER_OPERATION";
// gles 2, 3 and gl 4 error are handled by the switch above
default:
assert(!"unknown error");
return nullptr;
}
}
在 Android 上试试这个:http: //developer.android.com/reference/android/opengl/GLU.html#gluErrorString(int)在 iOS 上试试这个:https ://developer.apple.com/library/mac/documentation/达尔文/参考/ManPages/man3/gluErrorString.3.html
如果这些对您不起作用,您始终可以创建自己的从整数错误值到相应字符串的映射 - 这应该很容易,因为只有少数错误值。gl2.h
只需从和标头中查找错误值gl.h
(它们以 0x05 开头)。