2013-05-08 31 views
1

在OpenGL ES的3.0规范,我们可以读到:是否可以验证组件的非颜色可呈现内部格式的大小?

§4.4.5

当相关的帧缓冲结合为非零,如果当前绑定 帧缓冲区对象不FRAMEBUFFER完成,则该值表6.34列出的状态变量 未定义。

表6.34包含x_BITS常数。这意味着我们可以创建不可渲染颜色的纹理或渲染缓冲区,但我们无法验证它是否具有适当的大小。

有没有办法解决这个问题,还是我的想法完全倾斜,这些信息是不相关的(这会导致问题不正确)?

回答

2

您可以使用GetRenderbufferParameteriv(6.1.14 Renderbuffer Object Queries)查询绑定的渲染缓冲区属性。例如使用RENDERBUFFER_- INTERNAL_FORMAT。

问题是,除非帧缓冲区是完整的,否则它没有很好的形成,因此规范只是规定返回的值是未定义的。这并不意味着您可以查询附加的渲染缓冲区之一并获取所需的信息。

不知道这是否是你所期待的。

+0

这是一个有趣的问题,我忘了ES也有'GetRenderbufferParameter'。但该部分没有说明在对不完整缓冲区进行调用时会发生什么情况。然而,第二天部分,* 4.15 - 内部格式查询*拥有约'GetInternalformativ'的那句话:“internalformat必须是彩色渲染,深度渲染或stencilrenderable(如第4.4.4定义)。”。那会暗示我的企图是徒劳的,不是吗? – 2013-05-09 08:11:11

+0

如果您尝试创建一个渲染缓冲和internalformat不是颜色渲染,深度渲染,或模板可呈现的格式你得到一个GL_INVALID_ENUM错误。 – Trax 2013-05-09 08:47:34

+0

实际上,你在你的问题中声明你可以创建一个不可渲染的渲染缓冲区对象,这是不正确的。之前没有注意到。 – Trax 2013-05-09 08:58:53

相关问题