Сглаживание gouraud-заштрихованных полигонов вершинного цвета для удаления полос

StackOverflow https://stackoverflow.com/questions/198534

Вопрос

Я использую OpenGL ES на встроенное устройство с низким разрешением .

Я применил вертикальный градиент цвета, используя раскраску вершин, к большому многоугольнику, который служит фоном для моей отрисованной сцены. Я вижу четкие видимые артефакты полос в цветном градиенте.

Мой основной опыт - использование программных рендеров. В программных средствах визуализации распространено размытие маховых полос и других артефактов полос. Мы часто делаем это на этапе квантования рендеринга кадра, где плавающая точка, высокоточные представления цветов преобразуются в выход с более низкой точностью (обычно с целочисленными компонентами). Мы достигаем сглаживания путем случайного округления конечного целочисленного компонента вверх или вниз, чтобы вставить в изображение только малейший кусочек шума, чтобы обмануть глаза и увидеть непрерывные и плавные сочетания цветов.

Мой вопрос заключается в том, могу ли я добиться этого с помощью OpenGL ES? Является ли этот тип дизеринга частью конвейера OpenGL, или я должен пропустить раскраску вершин и визуализировать градиент текстуры и добавить к ней немного шума?

Это было полезно?

Решение

Вы пробовали glEnable (GL_DITHER)? Обычно он изначально включен, но я никогда не работал с GL ES или на встроенном устройстве. Это также может зависеть от глубины цвета, которую вы используете в буфере кадров, вы получите артефакты, если у вас есть только 4 бита на канал.

Другие советы

Я никогда не слышал о том эффекте, который вы описываете, будучи в трубе OGL. Однако мои знания немного устарели, поэтому я могу ошибаться. Я бы дал рендер для рендеринга текстуры, если вы можете.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top