-
Notifications
You must be signed in to change notification settings - Fork 181
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Implement OpenGL default texture #526
base: dev
Are you sure you want to change the base?
Conversation
As stated by OpenGL spec:
Your current implementation is not following that as there's only one global default texture. |
public static void bindTexture(int id) { | ||
boundTextureId = id; | ||
boundTexture = map.get(id); | ||
if (id == 0) { |
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
:
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. |
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
defaultTexture
field in the static initializer because it crashes due to cycling dependencies.This is required to properly support Not-Enough-Crashes