-
Notifications
You must be signed in to change notification settings - Fork 264
Conversation
xCollateral
commented
Nov 3, 2024
As stated by OpenGL spec:
Texture names are unsigned integers. The value zero is reserved to represent the default texture for each texture target..
Your current implementation is not following that as there's only one global default texture.
At the current state it can only be used as a temporary workaround to prevent crashes in cases where the 0 value is bound.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Why not adding it directly to the map instead of doing that check?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I can do that, but I would have to add a direct if () statement for glDeleteTextures, as the documentations says for ID deleting texture should be a noop.
Also, I cannot move image initialization to the static initializer as VulkanImage need the static initialize of GlTexture for some reason.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
OpenGL Documentation for glDeleteTextures:
Fox2Code
commented
Nov 3, 2024
As stated by OpenGL spec:
Texture names are unsigned integers. The value zero is reserved to represent the default texture for each texture target..Your current implementation is not following that as there's only one global default texture.
At the current state it can only be used as a temporary workaround to prevent crashes in cases where the 0 value is bound.
Well, I implemented as close to my understanding as possible, if I'm that far from the OpenGL spec, this means I for sure don't understand what the OpenGL spec want to say by using thoses words.
I used this exact statement to guide the implementation included in this PR.
Fox2Code
commented
Nov 19, 2024
Note: @xCollateral want to do the commit himself, I keep this PR as a reminder for him.
https://registry.khronos.org/OpenGL-Refpages/gl4/html/glBindTexture.xhtml
"The value zero is reserved to represent the default texture for each texture target."
https://stackoverflow.com/questions/15273674/binding-a-zero-texture-in-opengl
(Link show graphics drivers usually make it black or white, but specifics are undefined)
Also I cannot initialize the
defaultTexturefield in the static initializer because it crashes due to cycling dependencies.This is required to properly support Not-Enough-Crashes