нарисовать треугольник в пределах одного пикселя в OpenGL - PullRequest
1 голос
/ 09 марта 2012

Можно ли нарисовать треугольник в пределах одного пикселя?

Например, когда я указываю координаты вершин треугольника как A (0, 1), B (0, 0) и C (1, 0).Я не вижу, чтобы треугольник отображался вообще.Я ожидал увидеть маленький треугольник, вписывающийся в пиксель.

Что-то мне не хватает?

Ответы [ 3 ]

3 голосов
/ 09 марта 2012

Пиксель - это самая маленькая дискретная единица, которую может показать ваш дисплей. Пиксели могут иметь только один цвет.

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

Это просто природа дискретного изображения.

3 голосов
/ 09 марта 2012

Пиксель - это одна точка , как треугольник вписывается в одну точку?

Абсолютно самая маленькая единица изображения.

Как вы думаете, почему вы можете визуализировать половину пикселя по диагонали? Пиксель либо на , либо на , это не может быть любое другое состояние. На какой спецификации OpenGL вы основываете свое предположение , большинство 3D-библиотек решат визуализировать пиксель в зависимости от того, какая часть субпиксельной информации заполнена. Но пиксель нельзя частично закрасить, он либо включен, либо выключен. Пиксель похож на лампочку, вы можете зажечь половину лампочки.

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

Только при определенных настройках камеры и рисовании треугольников в 2D-плоскости на определенном расстоянии от камеры можно ожидать, что вы попытаетесь отобразить 3D-координаты в 2D-координаты в формате 1: 1, и даже тогда это не будет точным во многих случаях.

Рендеринг субпикселей, это не значит, что вы думаете, это означает, что это метод / алгоритм, позволяющий определить, какие элементы RGB пикселей нужно осветить, и какой цвет сделать их, когда нужно много пикселей. Загорается, особенно в ситуациях сглаживания, и учитываются окружающие пиксели на растеризованном 2D-дисплее. Невозможно частично осветить один пиксель в форме, рендеринг субпикселя просто изменяет интенсивность цвета и яркость пикселя более тонким способом. Это работает только на ЖК-дисплее. Статья в Википедии очень хорошо описывает это.

В этом случае вы никогда не сможете нарисовать треугольник в одном пикселе. Треугольник потребует минимум 3 пикселя для отображения в виде треугольника:

■
■ ■

и 6 пикселей для представления растеризованного треугольника со всеми тремя представленными ребрами.

■
■ ■
■ ■ ■
0 голосов
/ 10 марта 2012

Можно ли нарисовать треугольник в пределах одного пикселя?

Нет!

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

Математическая теория, лежащая в ее основе, называется «Теория отсчетов», и самое главное, что вам нужно знать о так называемой теореме Найквиста.

Пиксели, являющиеся наименьшими элементами изображения, также являются причиной того, что вы не можете увеличить изображение, как это делают в CSI: Нью-Йорк, это просто невозможно, потому что на картинке просто больше нет информации, поскольку есть пиксели , (Что ж, если у вас есть какой-то дополнительный источник информации, например, путем объединения изображений, снятых в течение более длительного периода времени, и вы можете оценить движения, тогда действительно возможно превратить временную информацию в пространственную информацию, но это другая история .)

...