Полосы пустых или неправильно отрисованных строк развертки с использованием закадрового рендеринга с объектами буфера кадра

Я делаю закадровый рендеринг очень больших выходных изображений с использованием FBO. Чтобы добиться максимальной производительности, я пытаюсь создать максимально возможный FBO (и, следовательно, размер плитки). С этой целью я использую GL_MAX_RENDERBUFFER_SIZE_EXT для получения максимально возможного размера, а затем уменьшаю его, чтобы мой FBO не занимал более 1/16 доступной VRAM.

Это, кажется, гарантирует, что мой рендерер никогда не откажет из-за нехватки памяти или неполной ошибки FBO; однако с достаточно большими FBO (2002x1202 в одном простом тестовом примере) я иногда получаю странный результат. На моем Quadro 8600M, а также на другом Quadro FX 1700 я вижу полосы строк развертки, в которых либо ничего не отображается, либо несколько пикселей отображаются неправильного цвета. Этого не произойдет, если я ограничу размер FBO чем-то меньшим, например 500x500.

Это кому-то звонит в колокола? Я как бы в тупике.

(Я использую Windows XP Professional SP3)


person spurserh    schedule 26.07.2009    source источник
comment
Примечание для всех, кто сталкивается с этим: в конечном итоге это была ошибка в драйверах NVidia. Мне пришлось какое-то время сотрудничать с ними, чтобы сузить круг вопросов, но они говорят, что уже исправили это. Я реализовал обходной путь и не знаю, когда на самом деле исправление выйдет.   -  person spurserh    schedule 30.10.2009
comment
Можете ли вы подробнее рассказать об использованном вами обходном пути и об ошибке в частности?   -  person Adam Davis    schedule 29.04.2011
comment
Ошибка была связана с их реализацией glClear () в буферах трафарета. Я обошел это, нарисовав полноэкранный четырехугольник.   -  person spurserh    schedule 04.05.2011


Ответы (1)


Похоже на "жучок" драйвера.

Я бы попытался воспроизвести на другом оборудовании (ATI), если это вообще возможно. Также попробуйте разные версии драйверов на оборудовании Quadro.

Также проверьте коды ошибок GL или выполните что-то вроде glDebugger.

person Justicle    schedule 28.07.2009