OpenGl verex2f, но пиксели являются целыми числами - PullRequest
0 голосов
/ 04 июля 2018

при использовании этого кода:

glBegin(GL_POINTS);
    glVertex2f(2.5, 2.5);
    glVertex2f(3.2, 3.2);
glEnd();

Если я правильно понимаю, то координаты указаны относительно левого нижнего угла экрана, но каковы эти координаты?

если они в пикселях, не являются ли они целыми числами?

Что означает использование чисел с плавающей запятой, когда пиксели являются целочисленными единицами?

1 Ответ

0 голосов
/ 04 июля 2018

если они в пикселях, не являются ли они целыми числами?

Они не в пиксельных единицах. Данные вершины преобразуются в конечные координаты пространства окна (= пиксель) по всему конвейеру. Эти входные координаты, которые вы указываете, находятся в объектном пространстве , и это система координат, которую вы определяете по своему усмотрению.

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

Кроме того, вы должны знать, что в OpenGL вы не рисуете пикселей . Вы рисуете графические примитивы - точки, линии, треугольники - которые определяются определенным количеством вершин в каждой.

Что означает использование чисел с плавающей запятой, когда пиксели являются целочисленными единицами?

Даже в пространстве окна полезны координаты с плавающей точкой. Пиксели не являются дискретными точками, но представляют некоторую область. OpenGL (и другие API рендеринга) определяют пиксель в пространстве окна как квадрат с длиной стороны 1 единица. Вершины могут упасть в любую (субпиксельную) позицию внутри такого квадрата пикселей, и будут применены правила растеризации, чтобы сгенерировать соответствующие фрагменты размером с пиксель для примитивов, которые вы визуализируете.

...