Как квадраты отображаются как линии в режиме каркаса? - PullRequest
1 голос
/ 22 сентября 2011

Люди говорили мне, что «GPU отображает только треугольники».

Но как вы объясните, как GPU рендерит четырехугольник с 4 строками только в режиме каркаса, разве он не должен отображать его с 5 строками, так как GPU не может понять квады?

С другой стороны, как я могу эмулировать четырехугольники в будущем, где GL_QUADS запрещен? мне нужен шейдер для него, мне нужно генерировать новый массив строк для каждого объекта, и я не могу просто переключиться с GL_FILL на GL_LINE?

Ответы [ 2 ]

3 голосов
/ 22 сентября 2011

Линии - это нечто иное, чем заполненные примитивы. При переключении на glPolygonMode(…, GL_LINE) каждый раз, когда запускается заполненный примитив (GL_TRIANGLES, GL_QUADS), OpenGL не будет отправлять команды для заполненных примитивов, а будет содержать линии между вершинами заполненного примитива. Таким образом, GL_TRIANGLES преобразуется в набор из 3 GL_LINES, GL_QUADS преобразуется в набор из 4 GL_LINES. GL_POLYGON переводится в GL_LINE_LOOP. Конечно, эти переводы не происходят в терминах OpenGL, но драйвер OpenGL будет отправлять команды в графический процессор, которые эквивалентны тому, что было бы отправлено; также есть некоторые тонкие различия между режимом многоугольника GL_LINE и отправкой фактических линий, в особенности оценка флага границы.

1 голос
/ 22 сентября 2011

Я не совсем понимаю ваш вопрос, но из того, что я понял здесь, есть ответ.

Есть 2 понятия
1. Интерполяция Используется для определения того, какие пиксели должны быть нарисованы на линии.
2. Растеризация Используется для определения того, какие свойства (цвета, текстура и т. Д.) Следует назначать пикселям, расположенным внутри треугольника. Графический процессор может только растровые треугольники и интерполировать только линии . Поэтому, когда вы находитесь в каркасной модели, выполняется только интерполяция границы полигонов. Но когда мы находимся в модели твердой геометрии вместе с интерполяцией, мы также растрируем многоугольник.

...