Случайные белые точки OpenGL

Я пытаюсь отобразить геометрию на белом фоне. Проблема в том, что внутри геометрии появляются случайные белые точки. Когда я изменяю размер своего окна, белые точки меняются местами... появляются и исчезают случайным образом внутри геометрии (пока я изменяю размер окна).

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

Действительно, это похоже на какую-то проблему проверки попадания, когда реализация OpenGL не может обнаружить некоторые пиксели на границах двух соседних треугольников.

Я запускаю этот пример на 27-дюймовом iMac с NVIDIA GeForce GTX 675MX. Я собираюсь протестировать это же приложение на своем MacBook с интегрированной видеокартой Intel.

Может ли кто-нибудь пролить свет на эту тему?


person Danilo Carvalho    schedule 05.03.2013    source источник
comment
Это может произойти из-за ошибок точности/округления, если смежные треугольники не имеют общих вершин. В противном случае это может произойти только в том случае, если реализация OpenGL сломана (что маловероятно). У вас общие вершины или они отдельные?   -  person Damon    schedule 05.03.2013
comment
@Damon Я могу придумать по крайней мере еще один способ, которым это могло бы произойти, даже с правильно разделенными вершинами и хорошим драйвером, который является злоупотреблением GL_POLYGON_SMOOTH   -  person JasonD    schedule 05.03.2013


Ответы (1)


Спасибо @Damon. Я решил проблему, которая заключалась не в том, что вершины были не совсем одинаковыми. Настоящая проблема заключается в том, что (по замыслу) некоторые вершины должны оставаться на пересечении двух треугольников. Это вызывало проблемы с OpenGL. Решение состояло в том, чтобы переместить вершину немного вниз (внутри треугольников) и соответствующим образом настроить координаты текстуры.

Большое спасибо!

person Danilo Carvalho    schedule 05.03.2013