我正在使用 FBO 对非常大的输出图像进行屏幕外平铺渲染。为了获得最佳性能,我正在尝试创建尽可能大的 FBO(以及瓦片大小)。为此,我使用 GL_MAX_RENDERBUFFER_SIZE_EXT 来检索最大可能大小,然后减小它,以便我的 FBO 不会填充超过可用 VRAM 的 1/16。
这样做似乎可以确保我的渲染器永远不会因内存不足或不完整的 FBO 错误而失败;但是,对于足够大的 FBO(在一个简单的测试用例中为 2002x1202),我有时会得到一个奇怪的结果。在我的 Quadro 8600M 和另一台 Quadro FX 1700 上,我会看到扫描线带,其中要么没有渲染,要么渲染了错误颜色的几个像素。如果我将 FBO 的大小限制为较小的值,例如 500x500,则不会发生这种情况。
这会为任何人敲响警钟吗?我有点难过。
(我使用的是 Windows XP Professional SP3)