Как я могу указать вершины в пикселях в OpenGL?

Я хочу написать небольшой проект с OpenGL C++, и я хочу использовать пиксель вместо значения с плавающей запятой, например, так:

glVertext2f(420, 300);

Вместо:

glVertex2f(0.4, -0.34);

Является ли это возможным?

1 ответ

Решение

Если вы хотите использовать пиксельные координаты вашего рендеринга, это довольно легко сделать с помощью орфографической матрицы, которую вы можете создать, используя glOrtho, Предполагая, что ваше окно 800x600, вы можете использовать следующий код:

// Set your projection matrix
glMatrixMode(GL_PROJECTION);
glOrtho(0, 800, 0, 600, -1, 1);
// Restore the default matrix mode
glMatrixMode(GL_MODELVIEW);

glOrtho ожидает, что параметры будут "левый, правый, нижний, верхний", так что это фактически поместит начало координат в нижний левый угол (большинство систем координат OpenGL увеличивают Y при перемещении вверх). Тем не менее, вы хотите, чтобы начало координат находилось в верхнем левом углу, как это обычно бывает в большинстве систем рисования на основе пикселей, и вы хотите изменить нижний и верхний параметры.

Это позволит вам вызывать glVertex2f с координатами пикселей вместо координат клипов по умолчанию. Обратите внимание, что вам не нужно вызывать специальную функцию для преобразования из int в число с плавающей точкой. C и C++ должны выполнять неявное преобразование. т.е. glVertext2f(420, 300);

Другие вопросы по тегам