Недавно я подумал, что было бы неплохо отказаться от старых (устаревших) функций, предоставляемых OpenGL, таких как матричные операции и фиксированный конвейер функций.
Я использую GLM в качестве библиотеки матриц, чтобы немного упростить ситуацию. Проблема в том, что это, возможно, вызвало больше проблем, чем упростило...
Перспективные проекции отлично работали с моими шейдерами и настройками, но когда я попытался переключиться на ортогональные, все сломалось. Мои очки и простые квадраты не отображались. Когда я использовал старые матрицы OpenGL, все снова заработало.
Я сузил все это до проекционной матрицы. Вот как я это назвал:
glm::mat4 projMat = glm::ortho( 0, 400, 0, 400, -1, 1 );
Я сравнил это с тем, что поставляется opengl, как только это называется"
glOrtho( 0, 400, 0, 400, -1, 1 );
Единственным отличием являются элементы [0][0] и [1][1] (которые, насколько мне известно, равны «2/ширине» и «2/высоте» соответственно). Из матрицы OpenGL значения были именно такими! Однако в матрице glm значения были равны 0.
Как только я вручную переключил значения из матрицы glm после вызова glm::ortho, все снова заработало!
Итак, мой вопрос: действительно ли функция glm::ortho() не работает, или я просто неправильно ее использую?