Error.cpp 1.0 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. // Copyright (C) 2009-2021, Panagiotis Christopoulos Charitos and contributors.
  2. // All rights reserved.
  3. // Code licensed under the BSD License.
  4. // http://www.anki3d.org/LICENSE
  5. #include <AnKi/Gr/gl/Error.h>
  6. #include <AnKi/Util/Logger.h>
  7. #include <cstring>
  8. namespace anki {
  9. void glConditionalCheckError(const char* file, int line, const char* func)
  10. {
  11. GLenum errId = glGetError();
  12. if(errId == GL_NO_ERROR)
  13. {
  14. return;
  15. }
  16. const char* glerr;
  17. switch(errId)
  18. {
  19. case GL_INVALID_ENUM:
  20. glerr = "GL_INVALID_ENUM";
  21. break;
  22. case GL_INVALID_VALUE:
  23. glerr = "GL_INVALID_VALUE";
  24. break;
  25. case GL_INVALID_OPERATION:
  26. glerr = "GL_INVALID_OPERATION";
  27. break;
  28. case GL_INVALID_FRAMEBUFFER_OPERATION:
  29. glerr = "GL_INVALID_FRAMEBUFFER_OPERATION";
  30. break;
  31. case GL_OUT_OF_MEMORY:
  32. glerr = "GL_OUT_OF_MEMORY";
  33. break;
  34. default:
  35. glerr = "unknown";
  36. };
  37. char errStr[256];
  38. const char tmp[] = "OpenGL exception: ";
  39. memcpy(errStr, tmp, sizeof(tmp));
  40. strcat(errStr, glerr);
  41. ANKI_GL_LOGF("GL error: %s (%s:%d %s)", errStr, file, line, func);
  42. }
  43. } // namespace anki