Glad: Nicht alle Enums haben eine Gruppe

Erstellt am 11. Jan. 2020  ·  6Kommentare  ·  Quelle: Dav1dde/glad

(Hinweis: Dies ist vom Master-Zweig, von dem ich annehme, dass es sich um froh-1 handelt.)
Ich versuche zur Zeit einen C ++ Generator für Glad (mehr im Einklang mit normalen C ++ Möglichkeiten des Schreiben Dinge, wie der Verwendung von schreiben enum class name : underlying type {} anstatt viele, viele #define s).

Eine Sache, die mir beim Ändern von CPPGenerator(Generator) (größtenteils eine direkte Kopie des C-Generators) in der Methode write_enums aufgefallen ist, ist, dass einige Aufzählungen keine Gruppeneigenschaft haben, obwohl es scheint, als ob sie sollten.
Zum Beispiel: GL_POINTS ist ein Eintrag innerhalb der Gruppe PrimitiveType , aber der Gruppenwert ist nicht festgelegt ( None ), und daher kann ich seine Gruppe nicht richtig abrufen und die Aufzählung generieren.
Ich baue derzeit mit: python3 -m glad --out-path=buildcpp --spec=gl --api="gl=,gles1=,gles2=" --generator=cpp
Um dies zu zeigen, mit dem normalen C-Generator:
Ändern Sie die normale C- Generator-Methode write_enums Folgendes hat:

if enum.name == "GL_POINTS":
    print('{} - {}'.format(enum.name, enum.group))

Innerhalb der for-Schleife und wenn sie ausgeführt wird, wird Folgendes ausgegeben:

GL_POINTS - None
GL_POINTS - None
GL_POINTS - None

Beim Ausführen mit python3 -m glad --out-path=buildc --spec=gl --api="gl=,gles1=,gles2=" --generator=c
Gibt es einen offensichtlichen Grund dafür, den ich übersehe, oder Möglichkeiten, damit es wie erwartet funktioniert?

glad1 question

Hilfreichster Kommentar

@MinusGix seit dem Zusammenführen des Khronos MR habe ich den Parser in froh und froh2 entsprechend aktualisiert und er sollte nun die richtige Enum-Gruppe melden.

Alle 6 Kommentare

Ja Master-Zweig freut sich 1.

Der Grund dafür ist, dass im XML keine Gruppe definiert ist:

    <enums namespace="GL" start="0x0000" end="0x7FFF" vendor="ARB" comment="Mostly OpenGL 1.0/1.1 enum assignments. Unused ranges should generally remain unused.">
        <enum value="0x0000" name="GL_POINTS"/>
        <enum value="0x0001" name="GL_LINES"/>

Vergleichen mit:

    <enums namespace="GL" start="0x8B30" end="0x8B3F" group="ShaderType" vendor="ARB">
        <enum value="0x8B30" name="GL_FRAGMENT_SHADER"/>
        <enum value="0x8B30" name="GL_FRAGMENT_SHADER_ARB"/>
        <enum value="0x8B31" name="GL_VERTEX_SHADER"/>
        <enum value="0x8B31" name="GL_VERTEX_SHADER_ARB"/>
            <unused start="0x8B32" end="0x8B3F" comment="For shader types"/>
    </enums>

Daher müssen Sie für diese Enumerationen wahrscheinlich auf globale Defines oder andere Methoden zurückgreifen.

Ich empfehle Ihnen, sich mit glad2 zu beschäftigen, es kann etwas mehr Arbeit sein, da es etwas weniger einfach ist, aber das macht es auf lange Sicht besser und einfacher zu bedienen. Die Verwendung einer Template-Engine zum Generieren von Code (jinja2) hilft ebenfalls. Außerdem verfügt es über ein Plugin-System, das das Einhängen erleichtern soll.

Nicht verwandt (oder vielleicht teilweise verwandt?) Haben Sie gesehen: https://github.com/KhronosGroup/OpenGL-Registry/issues/335 und die pr von https://github.com/KhronosGroup/OpenGL-Registry/pull /343

Habe ich nicht, danke, dass du mich darauf aufmerksam gemacht hast. Dies scheint eine vernünftige Änderung zu sein und sollte mit froh kompatibel sein. Schade, dass ich ursprünglich nicht getaggt wurde.

Ich muss den Parser dafür aktualisieren, aber dies sollte eine minimale Änderung sein und Ihrer Sache massiv helfen.

Ich entschuldige mich, dass ich Sie nicht früher getaggt habe, ich habe ursprünglich nur die bekannten GitHub-Handles der Autoren im Abschnitt "Sprachbindungen" der Khronos-Website getaggt.

Lassen Sie mich wissen, wie Sie mit dem neuen Schema zurechtkommen, sobald es zusammengeführt ist. :) :)

@Perksey keine Sorge, es gibt keine Möglichkeit, jedes Tool zu finden, das es mit den Spezifikationen gibt, aber das ist Teil des Problems.

Freue mich auf deine Änderungen!

@MinusGix seit dem Zusammenführen des Khronos MR habe ich den Parser in froh und froh2 entsprechend aktualisiert und er sollte nun die richtige Enum-Gruppe melden.

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen

Verwandte Themen

incendor picture incendor  ·  8Kommentare

NamelessPerson picture NamelessPerson  ·  3Kommentare

devvoid picture devvoid  ·  8Kommentare

Maigo picture Maigo  ·  4Kommentare

sasmaster picture sasmaster  ·  9Kommentare