mirror of
https://github.com/libsdl-org/SDL.git
synced 2025-10-16 23:06:03 +00:00
video: Fix SDL_GL_GetAttribute depth/stencil size when 0
This commit is contained in:

committed by
Ryan C. Gordon

parent
344e394bf4
commit
8509041a09
@@ -4910,7 +4910,22 @@ bool SDL_GL_GetAttribute(SDL_GLAttr attr, int *value)
|
|||||||
if (glBindFramebufferFunc && (current_fbo != 0)) {
|
if (glBindFramebufferFunc && (current_fbo != 0)) {
|
||||||
glBindFramebufferFunc(GL_DRAW_FRAMEBUFFER, 0);
|
glBindFramebufferFunc(GL_DRAW_FRAMEBUFFER, 0);
|
||||||
}
|
}
|
||||||
|
// glGetFramebufferAttachmentParameterivFunc may cause GL_INVALID_OPERATION when querying depth/stencil size if the
|
||||||
|
// bits is 0. From the GL docs:
|
||||||
|
// If the value of GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE is GL_NONE, then either no framebuffer is bound to target;
|
||||||
|
// or a default framebuffer is queried, attachment is GL_DEPTH or GL_STENCIL, and the number of depth or stencil bits,
|
||||||
|
// respectively, is zero. In this case querying pname GL_FRAMEBUFFER_ATTACHMENT_OBJECT_NAME will return zero, and all
|
||||||
|
// other queries will generate an error.
|
||||||
|
GLint fbo_type = GL_FRAMEBUFFER_DEFAULT;
|
||||||
|
if (attachment == GL_DEPTH || attachment == GL_STENCIL) {
|
||||||
|
glGetFramebufferAttachmentParameterivFunc(GL_FRAMEBUFFER, attachment, GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE, &fbo_type);
|
||||||
|
}
|
||||||
|
if (fbo_type != GL_NONE) {
|
||||||
glGetFramebufferAttachmentParameterivFunc(GL_FRAMEBUFFER, attachment, attachmentattrib, (GLint *)value);
|
glGetFramebufferAttachmentParameterivFunc(GL_FRAMEBUFFER, attachment, attachmentattrib, (GLint *)value);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
*value = 0;
|
||||||
|
}
|
||||||
if (glBindFramebufferFunc && (current_fbo != 0)) {
|
if (glBindFramebufferFunc && (current_fbo != 0)) {
|
||||||
glBindFramebufferFunc(GL_DRAW_FRAMEBUFFER, current_fbo);
|
glBindFramebufferFunc(GL_DRAW_FRAMEBUFFER, current_fbo);
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user