2011-07-11 169 views
5

我正在使用笔记本电脑上的OpenGL应用程序。当我尝试显示单色图像(相当大)时,我的应用程序会显示大量黑白无法辨认的图案。我有一种预感,可能是因为我的旧GeForce Go 7950 GTX(512 MB)对于我的应用来说太旧了,并且认为问题是由于framebuffer对象大小的限制 - 是否有办法找出最大的FBO是?最大OpenGL FrameBuffer对象大小限制?

+1

您可以使用[gDebugger](http://www.gremedy.com/download.php)(它是免费的)来调试此类问题。 –

回答

7

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

然而,有一个最大的视口尺寸,使用GL_MAX_VIEWPORT_DIMS得到它,但根据OpenGL规范,无论如何,视口默默地夹住了最大尺寸,不应该引起毛刺。 https://www.opengl.org/sdk/docs/man/html/glViewport.xhtml

+0

作为一个尺寸说明:'GL_MAX_VIEWPORT_DIMS'的值不一定是POT(它通常在桌面设备上*是*,但例如我在NVIDIA Tegra 3上获得了3839 x 3839),但在某些平台上(OpenGL ES on手机主要是)使用NPOT纹理(甚至是非方形POT纹理)可以并且会造成麻烦 - 因此我建议让最近的POT值低于两者中较大的一个(最大H/W,例如对于T3它会是2048),并将其用作创建FBO的H&W的上限。这固定了我得到的一个晦涩的'GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT'错误。 – vaxquis

3
GLuint dims[2]; 
glGetIntegerv(GL_MAX_VIEWPORT_DIMS, &dims[0]); 

这给你一个视口的最大宽度/高度。