OpenGL Error Codes geändert?



  • Hallo,

    in meiner OpenGl Anwendung (ich verwende GLEW 1.7.0) habe ich mir eine kleine Funktion geschrieben, die mir Fehler ausgibt:

    void gl_check_for_errors(const std::string& filename, int line)
    {
      GLenum error = glGetError();
    
      if(error == GL_NO_ERROR)
        return;
    
      std::string str_error_code;
    
    #define CODE(c)  case c:str_error_code=#c;break;
    
      switch(error)
      {
      CODE(GL_NO_ERROR)
      CODE(GL_INVALID_ENUM)
      CODE(GL_INVALID_VALUE)
      CODE(GL_INVALID_OPERATION)
      CODE(GL_INVALID_FRAMEBUFFER_OPERATION)
      CODE(GL_OUT_OF_MEMORY)
      default:
        str_error_code = "Unknown error!";
      }
    
      g_warning("**gl_check_for_errors** OpenGL Error %s occured in <%s> line %i!\n", str_error_code.c_str(), filename.c_str(), line);
    }
    

    Laut http://www.opengl.org/sdk/docs/man3/xhtml/glGetError.xml müssten damit alle ErrorCodes von OpenGl 3.3 abgedeckt sein.

    Haute hat mein Programm gemeint, er hätte einen "Unknown error!". Ein kurzes Debugen ergab, dass es der Error Code 0x503 war.

    Ein weiterer Blick nach http://www.opengl.org/wiki/GL_error_codes ergab, dass damit der GL_OUT_OF_MEMORY gemeint sein müsste, was komisch ist, da er ja im enum abgedeckt ist.

    Noch ein weiterer Blick in die Glew Header gab den Schock:

    #define GL_OUT_OF_MEMORY 0x0505
    

    Wie kann es sein, dass Im Wiki steht übrigens auch, dass GL_STACK_OVERFLOW vor OpenGL 3.1 ebenfalls den Error Code 0x503 hatte.

    Meine Vermutung wäre, dass sich die Error Codes bei 3.1 geändert hätte, was IMHO relativ schwachsinnig wäre und für meinen Fall ziemlich suboptimal wäre, da meine Applikation in Zukunft zu OpenGL 2.1 und 3.1 kompatibel sein soll.

    Meine Fragen:

    • Wo kann ich mich weiterinformieren?
    • Kann ich beide Versionen unterstützen, ohne die ErrorCodes manuell im Code zu verwenden und nach unterschiedlichen OpenGlVersionen zu abzufragen? http://www.opengl.org/wiki/Talk:GL_Error_Codes

Anmelden zum Antworten