2016-06-30 15 views
1

Derzeit meine Funktion Ergebnis eglGetError() sieht wie folgt zu konvertieren:Gibt es eine Standardmethode zum Abfragen der EGL-Fehlerzeichenfolge?

std::string eglErrorString(EGLint error) 
{ 
    switch(error) 
    { 
    case EGL_SUCCESS: return "No error"; 
    case EGL_NOT_INITIALIZED: return "EGL not initialized or failed to initialize"; 
    case EGL_BAD_ACCESS: return "Resource inaccessible"; 
    case EGL_BAD_ALLOC: return "Cannot allocate resources"; 
    case EGL_BAD_ATTRIBUTE: return "Unrecognized attribute or attribute value"; 
    case EGL_BAD_CONTEXT: return "Invalid EGL context"; 
    case EGL_BAD_CONFIG: return "Invalid EGL frame buffer configuration"; 
    case EGL_BAD_CURRENT_SURFACE: return "Current surface is no longer valid"; 
    case EGL_BAD_DISPLAY: return "Invalid EGL display"; 
    case EGL_BAD_SURFACE: return "Invalid surface"; 
    case EGL_BAD_MATCH: return "Inconsistent arguments"; 
    case EGL_BAD_PARAMETER: return "Invalid argument"; 
    case EGL_BAD_NATIVE_PIXMAP: return "Invalid native pixmap"; 
    case EGL_BAD_NATIVE_WINDOW: return "Invalid native window"; 
    case EGL_CONTEXT_LOST: return "Context lost"; 
    } 
    return "Unknown error "+to_hex_string(int(error)); 
} 

Aber für z.B. OpenGL selbst gibt es gluErrorString(), die uns erspart, die Liste der Fehler manuell zu pflegen.

Gibt es so etwas wie gluErrorString() für die EGL?

+0

'gluErrorString' ist nur verfügbar, wenn Sie GLU verwenden. Für modernen Code ist das nicht relevant. Tatsächlich behandelt es nicht einige der neueren Fehler, die 'glGetError' zurückgeben kann, wie ungültige Framebuffer oder verlorene Kontexte. Es ist also besser, Fehler nur manuell zu bearbeiten. –

+0

@NicolBolas Wenn Sie sich der Korrektheit Ihrer Wörter sicher sind, warum legen Sie sie nicht in eine Antwort? – Ruslan

+0

Ihre Frage war, ob es eine Funktion wie 'gluErrorString' für EGL gibt. Mein Kommentar war zu sagen, dass Sie nicht stören sollten und nur Ihre eigenen beibehalten. Während das dein Problem löst, beantwortet es nicht wirklich die Frage, die du gestellt hast. Soweit ich weiß, könnte es da draußen eine Standard-'egluErrorString'-Funktion geben. Das wäre eine Antwort auf Ihre Frage. –

Antwort

1

Definitiv nicht als Teil von EGL selbst. Und ich denke nicht, dass es da sein sollte. EGL ist eine Low-Level-Fenstersystemschnittstelle. Die Erzeugung von benutzerlesbaren Strings ist wirklich nicht ihre Aufgabe.

Sie können denken, dass eine Funktion, die ein paar Strings erzeugt, trivial und harmlos ist. Da es sich jedoch um vom Benutzer lesbare Strings handeln würde, müsste man fast über Internationalisierung nachdenken. Das bedeutet, dass Sie die Zeichenfolgen in verschiedenen Sprachen abrufen können, einschließlich derer, die unterschiedliche Zeichensätze verwenden. Was plötzlich einfach aussieht, wird plötzlich viel komplexer. Und zumindest meiner Meinung nach wäre die Unterstützung nur englischer Strings sehr willkürlich.

noch wichtiger ist, Fehler zu übersetzen Codes Strings ist begrifflich nicht Teil einer API, die eine Schnittstelle zu einem Fenstersystem zur Verfügung stellt. IMHO sollten diese Arten von APIs minimal sein. In diesem Fall sollte es genau die Funktionalität zur Verfügung stellen, die benötigt wird, um mit dem Fenstersystem zu verbinden, und nichts mehr.

Natürlich niemand stoppt Sie (oder irgendjemand anderen) von der Implementierung einer höheren Ebene Bibliothek, die diese Art von Funktionalität bietet. Genau das ist GLU (wo gluErrorString() herkam) für OpenGL. Es stellte einige häufig verwendete Funktionen zur Verfügung, die über OpenGL lagen.

Die Verwendung von Vergangenheitsform, wenn über GLU im vorherigen Absatz gesprochen wurde, war absichtlich. Es basiert auf OpenGL-Funktionalität aus einem früheren Jahrtausend.