2012-02-21 3 views
0

Я тестирую некоторые элементы рендеринга с OpenGL, и я заметил, что у меня есть некоторые проблемы с длинными тонкими полигонами, которые образуют плоскость. Поэтому, имея два из этих длинных многоугольников непосредственно рядом друг с другом, щелкнув на длинной стороне, я заметил, что некоторые пиксели на краю невидимы. Эти невидимые пиксели движутся, когда я перемещаю камеру.OpenGL рендеринг и растеризация slivers

Я обнаружил, что это связано с тем, что пиксели на краю этих «многоугольников» будут невидимы, потому что растеризация считает, что они не находятся в пределах этого многоугольника на этом конкретном угле зрения.

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

Если вы нашли мое описание проблемы немного странным, см. http://www.ugrad.cs.ubc.ca/~cs314/Vjan2008/slides/week5.day3-4x4.pdf стр. 27 и далее. Это то, что я имею в виду.

EDIT: Хорошо, я думаю, что я должен сделать ясно, что моя проблема, потому что у меня есть ощущение, что я не могу ADRESS его анти методы наложения спектров

aaa|b|cc 
aaa|b|cc 
aaa|b|cc 
^^ 
    1 2 

- the polygons a, b and c form a plane 
- some pixels at edge 1 and 2 are invisible at certain camera angles 
+0

Обычно эти артефакты могут быть уменьшены путем включения передискретизации. Это не просто подсказка. – PeterT

+0

Вы имеете в виду «сглаживание» с передискретизацией? например с GL_POLYGON_SMOOTH? – cdx

+0

@cdx: Скорее всего, имел смысл FSA, то есть мультисэмплинг. – datenwolf

ответ

1

То, что я не выяснить, является как сказать OpenGL также разместить пиксели на экране, которые находятся непосредственно на краю этого многоугольника.

В общем, вы этого не делаете. Если OpenGL думает, что часть треугольника слишком тонкая, чтобы отображаться для данного разрешения, то она слишком тонкая, чтобы ее можно было визуализировать. Общая форма этого вопроса называется так называемым «псевдонимом».

Решение заключается в использовании техники сглаживания. Например, мультисэмплинг. Когда вы создаете контекст, выберите несколько образцов для использования.

Смежные вопросы