生成されたファイル(glad v1)で、多くの関数とタイプのサフィックス(glObjectLabelKHRなど)バージョンとサフィックスなし(glObjectLabelなど)バージョンの両方を取得していることに気付きました。
少なくとも、これはメモリとCPUが重複する関数ポインタをロードする無駄ですが、実際には仕様に違反していると思います。 KHR_debug(https://www.khronos.org/registry/OpenGL/extensions/KHR/KHR_debug.txt)の定義は、次のように述べています。
この拡張仕様では、新しいエントリポイント、タイプ、およびトークンにサフィックスなしの名前が使用されます。 これは、OpenGLに対する実装には正しいです。 ただし、OpenGL ESコンテキストで実装された場合、すべての新しいエントリポイント、タイプ、およびトークンにはKHRサフィックスが付けられます。
加えて、全体を通して同様の文。
理想的には、ジェネレーターでサフィックスのないバージョンを無視するようにします。 それは可能ですか?
編集:明確にするために、これらの関数は、私が喜んで要求しているOpenGL ES3.1仕様の一部ではありません。 私のコマンドラインは "python -m glad--out-pathです。--profile =" core "--api =" gles2 = 3.1 "--generator =" c "--spec =" gl "--extensions = 「GL_KHR_debug」-reproducible--no-loader」。
これは、glad1で修正するのは簡単ではありません。 拡張機能に含める関数/コマンドの決定は、生成するAPIの知識が得られる前に行われます。
Glad2は最初は正しく実行しましたが、Vulkan1.1を使用しました。 エイリアスを解決する必要があり、 glObjectLabelKHR
のエイリアスはglObjectLabel
設定されています。 エイリアスを解決する必要がある理由は、vk1.0拡張シンボルがvk1.1コアに昇格したことで仕様がおかしくなったためです。
これは間違いなく両方のバージョンのバグです:(。
glad2で修正されましたが、実際には上記の問題とは関係ありませんでしたが、比較的類似しています。
これをglad1で修正したいかどうかはわかりませんが、 require
指示が行われる方法は完全に間違っています。
私はうれしいです(しゃれは意図されていません)それは迅速な修正でした! これは私が今うれしいv2を試さなければならないことを意味すると思います...
_KHRサフィックスが拡張機能で使用されるすべてのトークンに適用されるのか、それとも新しいトークンだけに適用されるのかについて、仕様がかなり混乱していることがわかりました。 拡張ドキュメントからこの表の値が指定されているものだけを想定しています(他はすでに存在している
BUFFER 0x82E0
SHADER 0x82E1
PROGRAM 0x82E2
VERTEX_ARRAY
QUERY 0x82E3
PROGRAM_PIPELINE 0x82E4
TRANSFORM_FEEDBACK
SAMPLER 0x82E6
TEXTURE
RENDERBUFFER
FRAMEBUFFER
期待どおりにGL_BUFFER_KHR
を取得します( GL_BUFFER
ありません)。 私が取得GL_FRAMEBUFFER
(とないGL_FRAMEBUFFER_KHR
私は期待して考えると)。 しかし、私はGL_VERTEX_ARRAY_KHR
( GL_VERTEX_ARRAY
ではありません)。これはわかりません。
何か洞察はありますか?
GL_FRAMEBUFFER
はgles22.0の一部です。GL_BUFFER_KHR
はGL_KHR_debug
gles2 APIからのものです(以下を参照)GL_VERTEX_ARRAY_KHR
はGL_KHR_debug
gles2 APIからのものです(以下を参照)GL_VERTEX_ARRAY
はgles2 3.2のみですが、3.1を生成します <extension name="GL_KHR_debug" supported="gl|glcore|gles1|gles2">
<require api="gl" comment="KHR extensions *mandate* suffixes for ES, unlike for GL">
<enum name="GL_DEBUG_OUTPUT_SYNCHRONOUS"/>
<enum name="GL_DEBUG_NEXT_LOGGED_MESSAGE_LENGTH"/>
<enum name="GL_DEBUG_CALLBACK_FUNCTION"/>
<enum name="GL_DEBUG_CALLBACK_USER_PARAM"/>
<enum name="GL_DEBUG_SOURCE_API"/>
<enum name="GL_DEBUG_SOURCE_WINDOW_SYSTEM"/>
<enum name="GL_DEBUG_SOURCE_SHADER_COMPILER"/>
<enum name="GL_DEBUG_SOURCE_THIRD_PARTY"/>
<enum name="GL_DEBUG_SOURCE_APPLICATION"/>
<enum name="GL_DEBUG_SOURCE_OTHER"/>
<enum name="GL_DEBUG_TYPE_ERROR"/>
<enum name="GL_DEBUG_TYPE_DEPRECATED_BEHAVIOR"/>
<enum name="GL_DEBUG_TYPE_UNDEFINED_BEHAVIOR"/>
<enum name="GL_DEBUG_TYPE_PORTABILITY"/>
<enum name="GL_DEBUG_TYPE_PERFORMANCE"/>
<enum name="GL_DEBUG_TYPE_OTHER"/>
<enum name="GL_DEBUG_TYPE_MARKER"/>
<enum name="GL_DEBUG_TYPE_PUSH_GROUP"/>
<enum name="GL_DEBUG_TYPE_POP_GROUP"/>
<enum name="GL_DEBUG_SEVERITY_NOTIFICATION"/>
<enum name="GL_MAX_DEBUG_GROUP_STACK_DEPTH"/>
<enum name="GL_DEBUG_GROUP_STACK_DEPTH"/>
<enum name="GL_BUFFER"/>
<enum name="GL_SHADER"/>
<enum name="GL_PROGRAM"/>
<enum name="GL_VERTEX_ARRAY"/>
<enum name="GL_QUERY"/>
<enum name="GL_PROGRAM_PIPELINE"/>
<enum name="GL_SAMPLER"/>
<enum name="GL_MAX_LABEL_LENGTH"/>
<enum name="GL_MAX_DEBUG_MESSAGE_LENGTH"/>
<enum name="GL_MAX_DEBUG_LOGGED_MESSAGES"/>
<enum name="GL_DEBUG_LOGGED_MESSAGES"/>
<enum name="GL_DEBUG_SEVERITY_HIGH"/>
<enum name="GL_DEBUG_SEVERITY_MEDIUM"/>
<enum name="GL_DEBUG_SEVERITY_LOW"/>
<enum name="GL_DEBUG_OUTPUT"/>
<enum name="GL_CONTEXT_FLAG_DEBUG_BIT"/>
<enum name="GL_STACK_OVERFLOW"/>
<enum name="GL_STACK_UNDERFLOW"/>
<command name="glDebugMessageControl"/>
<command name="glDebugMessageInsert"/>
<command name="glDebugMessageCallback"/>
<command name="glGetDebugMessageLog"/>
<command name="glPushDebugGroup"/>
<command name="glPopDebugGroup"/>
<command name="glObjectLabel"/>
<command name="glGetObjectLabel"/>
<command name="glObjectPtrLabel"/>
<command name="glGetObjectPtrLabel"/>
<command name="glGetPointerv"/>
</require>
<require api="gles2">
<enum name="GL_DEBUG_OUTPUT_SYNCHRONOUS_KHR"/>
<enum name="GL_DEBUG_NEXT_LOGGED_MESSAGE_LENGTH_KHR"/>
<enum name="GL_DEBUG_CALLBACK_FUNCTION_KHR"/>
<enum name="GL_DEBUG_CALLBACK_USER_PARAM_KHR"/>
<enum name="GL_DEBUG_SOURCE_API_KHR"/>
<enum name="GL_DEBUG_SOURCE_WINDOW_SYSTEM_KHR"/>
<enum name="GL_DEBUG_SOURCE_SHADER_COMPILER_KHR"/>
<enum name="GL_DEBUG_SOURCE_THIRD_PARTY_KHR"/>
<enum name="GL_DEBUG_SOURCE_APPLICATION_KHR"/>
<enum name="GL_DEBUG_SOURCE_OTHER_KHR"/>
<enum name="GL_DEBUG_TYPE_ERROR_KHR"/>
<enum name="GL_DEBUG_TYPE_DEPRECATED_BEHAVIOR_KHR"/>
<enum name="GL_DEBUG_TYPE_UNDEFINED_BEHAVIOR_KHR"/>
<enum name="GL_DEBUG_TYPE_PORTABILITY_KHR"/>
<enum name="GL_DEBUG_TYPE_PERFORMANCE_KHR"/>
<enum name="GL_DEBUG_TYPE_OTHER_KHR"/>
<enum name="GL_DEBUG_TYPE_MARKER_KHR"/>
<enum name="GL_DEBUG_TYPE_PUSH_GROUP_KHR"/>
<enum name="GL_DEBUG_TYPE_POP_GROUP_KHR"/>
<enum name="GL_DEBUG_SEVERITY_NOTIFICATION_KHR"/>
<enum name="GL_MAX_DEBUG_GROUP_STACK_DEPTH_KHR"/>
<enum name="GL_DEBUG_GROUP_STACK_DEPTH_KHR"/>
<enum name="GL_BUFFER_KHR"/>
<enum name="GL_SHADER_KHR"/>
<enum name="GL_PROGRAM_KHR"/>
<enum name="GL_VERTEX_ARRAY_KHR"/>
<enum name="GL_QUERY_KHR"/>
<enum name="GL_PROGRAM_PIPELINE_KHR"/>
<enum name="GL_SAMPLER_KHR"/>
<enum name="GL_MAX_LABEL_LENGTH_KHR"/>
<enum name="GL_MAX_DEBUG_MESSAGE_LENGTH_KHR"/>
<enum name="GL_MAX_DEBUG_LOGGED_MESSAGES_KHR"/>
<enum name="GL_DEBUG_LOGGED_MESSAGES_KHR"/>
<enum name="GL_DEBUG_SEVERITY_HIGH_KHR"/>
<enum name="GL_DEBUG_SEVERITY_MEDIUM_KHR"/>
<enum name="GL_DEBUG_SEVERITY_LOW_KHR"/>
<enum name="GL_DEBUG_OUTPUT_KHR"/>
<enum name="GL_CONTEXT_FLAG_DEBUG_BIT_KHR"/>
<enum name="GL_STACK_OVERFLOW_KHR"/>
<enum name="GL_STACK_UNDERFLOW_KHR"/>
<command name="glDebugMessageControlKHR"/>
<command name="glDebugMessageInsertKHR"/>
<command name="glDebugMessageCallbackKHR"/>
<command name="glGetDebugMessageLogKHR"/>
<command name="glPushDebugGroupKHR"/>
<command name="glPopDebugGroupKHR"/>
<command name="glObjectLabelKHR"/>
<command name="glGetObjectLabelKHR"/>
<command name="glObjectPtrLabelKHR"/>
<command name="glGetObjectPtrLabelKHR"/>
<command name="glGetPointervKHR"/>
</require>
<require api="gl" profile="compatibility">
<enum name="GL_DISPLAY_LIST"/>
</require>
</extension>
ソース: https :
どうもありがとうございます。 それは理にかなっている; GL_VERTEX_ARRAYが定義されている場所が見つからなかったため、混乱しました。
この問題を解決できてうれしいです。glad1では未修正のままにしておきますか?
ええ、それについて考えて、私はglad1でこれを修正しません。 これはバグです、はい、しかしそれはあまりにも多くのシンボルを生成するので、それは「ただ」迷惑になることになります。
報告ありがとうございます!
PS:glad2からの最新のコミットをチェックアウトしたいかもしれません、私はあまりにも多くの改行を生成しました。
迅速な修正をありがとう!
PS:glad2からの最新のコミットをチェックアウトしたいかもしれません、私はあまりにも多くの改行を生成しました。
= Pに気づきました