From: José Fonseca Date: Fri, 25 Nov 2011 11:15:06 +0000 (+0000) Subject: Fix internalformat determination for renderbuffers. X-Git-Tag: 2.0_alpha^2~462 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=3da77a1ad0b5960ffb1161ec327c80c49edc3dfe;p=tools%2Fapitrace.git Fix internalformat determination for renderbuffers. glGetRenderbufferParameteriv takes a target. --- diff --git a/glstate.cpp b/glstate.cpp index 665f887..6b9c072 100644 --- a/glstate.cpp +++ b/glstate.cpp @@ -825,7 +825,7 @@ getTextureLevelSize(GLint texture, GLint level, GLint *width, GLint *height) } -static GLint +static GLenum getTextureLevelFormat(GLint texture, GLint level) { GLenum target; @@ -862,6 +862,22 @@ getRenderbufferSize(GLint renderbuffer, GLint *width, GLint *height) } +static GLenum +getRenderbufferFormat(GLint renderbuffer) +{ + GLint bound_renderbuffer = 0; + glGetIntegerv(GL_RENDERBUFFER_BINDING, &bound_renderbuffer); + glBindRenderbuffer(GL_RENDERBUFFER, renderbuffer); + + GLint format = GL_NONE; + glGetRenderbufferParameteriv(GL_RENDERBUFFER, GL_RENDERBUFFER_INTERNAL_FORMAT, &format); + + glBindRenderbuffer(GL_RENDERBUFFER, bound_renderbuffer); + + return format; +} + + static bool getFramebufferAttachmentSize(GLenum target, GLenum attachment, GLint *width, GLint *height) { @@ -917,18 +933,13 @@ getFramebufferAttachmentFormat(GLenum target, GLenum attachment) } if (object_type == GL_RENDERBUFFER) { - GLint format = GL_NONE; - glGetRenderbufferParameteriv(object_name, GL_RENDERBUFFER_INTERNAL_FORMAT, - &format); - return format; + return getRenderbufferFormat(object_name); } else if (object_type == GL_TEXTURE) { GLint texture_level = 0; glGetFramebufferAttachmentParameteriv(target, attachment, GL_FRAMEBUFFER_ATTACHMENT_TEXTURE_LEVEL, &texture_level); - - GLint format = getTextureLevelFormat(object_name, texture_level); - return format; + return getTextureLevelFormat(object_name, texture_level); } else { std::cerr << "warning: unexpected GL_FRAMEBUFFER_ATTACHMENT_OBJECT_TYPE = " << object_type << "\n"; return GL_NONE;