Проблема, что у меня есть, есть некоторые пиксели в моей визуализированной сцене , которые, кажется, отсутствуют/невидимы и поэтому имеют тот же цвет, что и мой чистый цвет . Интересно, что это происходит только в случае отключения MSAA.Где пробелы пикселей появляются в OpenGL?
Моя первая мысль была, что это может иметь что-то делать с тем фактом, что все треугольники накладываются друг на друга и как-то искажено матрицей проекции, но эти артефакты только кажется, происходят на линиях, а не кромками ,
я прочитал о только применяя шкалу 1.00001 ко всему, другой вопрос, но это кажется дешевой хак мне, что может вызвать другие проблемы. Хотя эти артефакты, по-видимому, уменьшаются при использовании аппаратной мультисэмплинг, я хочу знать, есть ли другой способ решить эту проблему.
Edit:
Способ решить эту проблему Nicol Bolas:
OpenGL (и все другие аппаратные Средства прорисовки) только гарантирует беспрерывное визуализацию края между двумя треугольниками, если края ровно совпадение. И это означает, что вы не можете просто иметь один треугольник рядом с краем другого. Два треугольника должны иметь одинаковые вершины на общем краю между ними.
Итак, если у вас длинный треугольник рядом с коротким треугольником, то вам нужно разделить длинный треугольник на несколько треугольников, чтобы общая часть края была должным образом разделена между двумя треугольниками.
Как указывалось выше, одним из возможных решений заключается в разделении большие треугольники на мелкие, чтобы гарантировать, что все перекрывающиеся vertecies идентичны (т.е. отмены жадный зацепления). Но в моем случае я хочу сохранить жадную сетку из-за аспектов производительности.
16-битные поплавки - должны их ненавидеть – dtech
Будучи низкоточными машинами, вы действительно не хотите, чтобы ваша геометрия была урезана до края (как вам хотелось бы на практике или чертежу САПР), потому что ошибки аппроксимации в конечном итоге проявляются как графические артефакты. Как правило, у вас будет один самолет для пола, и он слегка войдет в стены и так далее. – dtech
У вас есть T-соединения. Это точный дубликат http://stackoverflow.com/questions/18523231/opengl-shimmering-pixels-artifact - публикация его, потому что кто-то снова открыл (почему?) – ybungalobill