Glad: Tous les Enums n'ont pas de groupe

Créé le 11 janv. 2020  ·  6Commentaires  ·  Source: Dav1dde/glad

(Remarque : il s'agit de la branche master, qui, je suppose, est content-1.)
J'essaie actuellement d'écrire un générateur C++ pour Glad (plus conforme aux manières C++ normales d'écrire des choses, comme utiliser enum class name : underlying type {} plutôt que beaucoup, beaucoup de #define s).

Une chose que j'ai remarquée en modifiant le CPPGenerator(Generator) (pour la plupart, une copie directe du générateur C), dans la méthode write_enums est que certaines énumérations n'ont pas de propriété de groupe même si il semble qu'ils le devraient.
Par exemple : GL_POINTS est une entrée à l'intérieur du groupe PrimitiveType , mais sa valeur de groupe n'est pas définie ( None ), et je ne peux donc pas obtenir correctement son groupe et générer l'énumération.
Je construis actuellement avec : python3 -m glad --out-path=buildcpp --spec=gl --api="gl=,gles1=,gles2=" --generator=cpp
Pour montrer cela, avec le générateur C normal :
Modifiez la méthode normale du générateur C write_enums pour avoir :

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

À l'intérieur de la boucle for, et une fois exécuté, il affichera :

GL_POINTS - None
GL_POINTS - None
GL_POINTS - None

Lorsqu'il est exécuté avec python3 -m glad --out-path=buildc --spec=gl --api="gl=,gles1=,gles2=" --generator=c
Y a-t-il une raison évidente pour laquelle je suis absent, ou des moyens de le faire fonctionner comme prévu ?

glad1 question

Commentaire le plus utile

@MinusGix depuis que le Khronos MR a été fusionné, j'ai mis à jour l'analyseur en conséquence dans glad et glad2 et il devrait maintenant signaler le groupe d'énumération correct.

Tous les 6 commentaires

Oui, la branche principale est contente 1.

La raison en est qu'il n'y a pas de groupe défini dans le XML :

    <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"/>

Comparer avec:

    <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>

Vous devez donc probablement vous rabattre pour ces énumérations sur des définitions globales ou d'autres méthodes.

Je vous recommande de regarder dans glad2, c'est peut-être un peu plus de travail à faire car c'est un peu moins simple, mais c'est ce qui le rend meilleur et plus facile à utiliser à long terme. L'utilisation d'un moteur de modèle pour générer du code (jinja2) est également utile. De plus, il dispose d'un système de plugins qui devrait le rendre plus facile à connecter.

Non lié, (ou peut-être partiellement lié ?) Avez-vous vu : https://github.com/KhronosGroup/OpenGL-Registry/issues/335 et, le pr de https://github.com/KhronosGroup/OpenGL-Registry/pull /343

Je ne l'ai pas fait, merci d'avoir attiré mon attention sur ce point. Cela semble être un changement raisonnable et devrait être compatible avec happy. Dommage que je n'aie pas été tagué à l'origine.

Je vais devoir mettre à jour l'analyseur pour cela, mais cela devrait être un changement minime et aider massivement votre cause.

Mes excuses pour ne pas vous avoir marqué plus tôt, j'ai initialement marqué uniquement les poignées GitHub connues des auteurs dans la section « Liaisons de langue » du site Web de Khronos.

Faites-moi savoir comment vous vous en sortez avec le nouveau schéma une fois qu'il sera fusionné. :)

@Perksey pas de soucis, il est impossible que vous trouviez tous les outils disponibles en utilisant les spécifications, mais cela fait partie du problème.

J'attends vos changements avec impatience !

@MinusGix depuis que le Khronos MR a été fusionné, j'ai mis à jour l'analyseur en conséquence dans glad et glad2 et il devrait maintenant signaler le groupe d'énumération correct.

Cette page vous a été utile?
0 / 5 - 0 notes

Questions connexes

Algorithmus picture Algorithmus  ·  7Commentaires

NamelessPerson picture NamelessPerson  ·  3Commentaires

lazysquid picture lazysquid  ·  5Commentaires

ButchDean picture ButchDean  ·  4Commentaires

tombsar picture tombsar  ·  8Commentaires