Glad: Tidak semua Enum memiliki grup

Dibuat pada 11 Jan 2020  ·  6Komentar  ·  Sumber: Dav1dde/glad

(Catatan: Ini dari cabang master, yang saya anggap senang-1.)
Saat ini saya mencoba menulis generator C++ untuk Glad (lebih sesuai dengan cara C++ normal dalam menulis sesuatu, seperti menggunakan enum class name : underlying type {} daripada banyak, banyak #define s).

Satu hal yang saya perhatikan saat memodifikasi CPPGenerator(Generator) (sebagian besar, salinan langsung dari generator C), dalam metode write_enums adalah bahwa beberapa enum tidak memiliki properti grup meskipun sepertinya mereka harus melakukannya.
Misalnya: GL_POINTS adalah entri di dalam grup PrimitiveType , tetapi nilai grupnya tidak disetel ( None ), dan dengan demikian saya tidak bisa mendapatkan grup dan menghasilkan enumerasi.
Saat ini saya membangun dengan: python3 -m glad --out-path=buildcpp --spec=gl --api="gl=,gles1=,gles2=" --generator=cpp
Untuk menunjukkan ini, dengan generator C normal:
Ubah metode write_enums generator C normal menjadi:

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

Di dalam for loop, dan ketika dijalankan akan mencetak:

GL_POINTS - None
GL_POINTS - None
GL_POINTS - None

Saat dijalankan dengan python3 -m glad --out-path=buildc --spec=gl --api="gl=,gles1=,gles2=" --generator=c
Apakah ada alasan yang jelas untuk ini yang saya lewatkan, atau cara untuk membuatnya berfungsi seperti yang diharapkan?

glad1 question

Komentar yang paling membantu

@MinusGix sejak Khronos MR telah digabungkan, saya memperbarui parser dengan senang dan senang2 dan sekarang harus melaporkan grup enum yang benar.

Semua 6 komentar

Ya master cabang senang 1.

Alasannya adalah, tidak ada grup yang ditentukan dalam 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"/>

Dibandingkan dengan:

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

Jadi, Anda mungkin harus mundur untuk enum ini ke definisi global atau metode lain.

Saya menyarankan Anda untuk melihat ke glad2, mungkin sedikit lebih banyak pekerjaan untuk dilakukan karena sedikit kurang mudah, tetapi inilah yang membuatnya lebih baik dan lebih mudah untuk digunakan dalam jangka panjang. Menggunakan mesin templat untuk menghasilkan kode (jinja2) juga membantu. Selain itu, ia memiliki sistem plugin yang membuatnya lebih mudah untuk dihubungkan.

Tidak terkait, (atau mungkin sebagian terkait?) Pernahkah Anda melihat: https://github.com/KhronosGroup/OpenGL-Registry/issues/335 dan, pr dari https://github.com/KhronosGroup/OpenGL-Registry/pull //343

Saya belum, terima kasih telah membawa ini ke perhatian saya. Ini sepertinya perubahan yang masuk akal dan harus kompatibel dengan senang. Sayangnya saya belum diberi tag pada awalnya.

Saya harus memperbarui pengurai untuk ini, tetapi ini harus menjadi perubahan minimal dan membantu tujuan Anda secara besar-besaran.

Saya minta maaf karena tidak memberi tag Anda lebih awal, saya awalnya hanya menandai pegangan GitHub yang diketahui dari penulis di bagian "Ikatan bahasa" di situs web Khronos.

Beri tahu saya bagaimana Anda melanjutkan dengan skema baru setelah digabungkan. :)

@Perksey jangan khawatir, tidak mungkin Anda menemukan setiap alat yang ada di luar sana menggunakan spesifikasi, tapi itu bagian dari masalah.

Menantikan perubahan Anda!

@MinusGix sejak Khronos MR telah digabungkan, saya memperbarui parser dengan senang dan senang2 dan sekarang harus melaporkan grup enum yang benar.

Apakah halaman ini membantu?
0 / 5 - 0 peringkat

Masalah terkait

p-groarke picture p-groarke  ·  5Komentar

computersarecool picture computersarecool  ·  6Komentar

raysan5 picture raysan5  ·  15Komentar

Frank-Walker picture Frank-Walker  ·  4Komentar

Maigo picture Maigo  ·  4Komentar