【问题标题】:Maximum OpenGL FrameBuffer Object size limit?最大OpenGL FrameBuffer对象大小限制?
【发布时间】:2011-07-11 20:12:52
【问题描述】:

我正在笔记本电脑上开发 OpenGL 应用程序。当我尝试显示单色图像(相当大)时,我的应用程序显示了许多无法识别的黑白图案。我有一种预感,可能是我的旧 Geforce Go 7950 GTX (512 MB) 对我的应用程序来说太旧了,并且认为问题是由于帧缓冲区对象大小限制 - 有没有办法找出最大的 FBO 可以是吗?

【问题讨论】:

  • 可以使用gDebugger(免费)调试此类问题。

标签: opengl framebuffer


【解决方案1】:

OpenGL 中的帧缓冲区大小没有最大限制。限制是您可以附加到它的最大纹理或渲染缓冲区。

然而,有一个最大视口大小,使用 GL_MAX_VIEWPORT_DIMS 获得它,但是根据 OpenGL 规范,视口无论如何都会默默地固定在最大大小并且不应该导致故障。 https://www.opengl.org/sdk/docs/man/html/glViewport.xhtml

【讨论】:

  • 作为尺寸说明:GL_MAX_VIEWPORT_DIMS 的值不一定是 POT(它通常在桌面设备上,但例如我在 NVIDIA 上得到 3839 x 3839 Tegra 3),但在某些平台(主要是手机上的 OpenGL ES)上使用 NPOT 纹理(甚至非方形 POT 纹理)可能并且会造成麻烦 - 因此我建议让最近的 POT 值低于较大的两者中的一个(最大 H/W,例如对于 T3,它将是 2048)并将其用作正在创建的 FBO 的两个 H&W 的上限。这修复了我遇到的一个模糊的 GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT 错误。
【解决方案2】:
GLuint dims[2];
glGetIntegerv(GL_MAX_VIEWPORT_DIMS, &dims[0]);

这为您提供了视口的最大宽度/高度。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-08-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-14
    相关资源
    最近更新 更多