Сглаживание gouraud-заштрихованных полигонов вершинного цвета для удаления полос
-
10-07-2019 - |
Вопрос
Я использую OpenGL ES на встроенное устройство с низким разрешением .
Я применил вертикальный градиент цвета, используя раскраску вершин, к большому многоугольнику, который служит фоном для моей отрисованной сцены. Я вижу четкие видимые артефакты полос в цветном градиенте.
Мой основной опыт - использование программных рендеров. В программных средствах визуализации распространено размытие маховых полос и других артефактов полос. Мы часто делаем это на этапе квантования рендеринга кадра, где плавающая точка, высокоточные представления цветов преобразуются в выход с более низкой точностью (обычно с целочисленными компонентами). Мы достигаем сглаживания путем случайного округления конечного целочисленного компонента вверх или вниз, чтобы вставить в изображение только малейший кусочек шума, чтобы обмануть глаза и увидеть непрерывные и плавные сочетания цветов.
Мой вопрос заключается в том, могу ли я добиться этого с помощью OpenGL ES? Является ли этот тип дизеринга частью конвейера OpenGL, или я должен пропустить раскраску вершин и визуализировать градиент текстуры и добавить к ней немного шума?
Решение
Вы пробовали glEnable (GL_DITHER)? Обычно он изначально включен, но я никогда не работал с GL ES или на встроенном устройстве. Это также может зависеть от глубины цвета, которую вы используете в буфере кадров, вы получите артефакты, если у вас есть только 4 бита на канал.
Другие советы
Я никогда не слышал о том эффекте, который вы описываете, будучи в трубе OGL. Однако мои знания немного устарели, поэтому я могу ошибаться. Я бы дал рендер для рендеринга текстуры, если вы можете.