Как я могу указать вершины в пикселях в 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);