glOrtho () не работает так, как я думал

Я пытаюсь, чтобы один из окон просмотра в моем окне отображал ортогональную проекцию чайника.

mat4 view = translate (identity_mat4 (), vec3 (0.0, 0.0, -40.0));
mat4 persp_proj = perspective(50.0, (float)width/(float)height, 0.1, 100.0);
mat4 model = rotate_x_deg (identity_mat4 (), 40);
glViewport (0, 0, width / 2, height / 2);
glOrtho(0,400,0,300,0,1);
glUniformMatrix4fv (proj_mat_location, 1, GL_FALSE, persp_proj.m);
glUniformMatrix4fv (view_mat_location, 1, GL_FALSE, view.m);
glUniformMatrix4fv (matrix_location, 1, GL_FALSE, model.m);
glDrawArrays (GL_TRIANGLES, 0, teapot_vertex_count);

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

Почему не то, что у меня есть работа, и как я бы исправить это?

Если я должен поставить glOrtho в определенном месте было бы полезно знать, где.

Кроме того, так как у меня должно быть несколько видов, будут ли после этого все окна просмотра иметь орфографическую проекцию?

Вот вся моя программа
фрагмент кода взят из строк 192-204

-2

Решение

У меня нет полных знаний о вашей программе, но, учитывая то, что я вижу, я сомневаюсь, что glOrtho будет работать вообще. Это (устаревшая) функция, используемая для умножения текущей матрицы в конвейере с фиксированными функциями на матрицу ортографической проекции. Однако ваша программа, похоже, использует шейдеры и строит свои собственные матрицы (как должно делать современная программа OpenGL). Так что, если у вас в данный момент работает без GlOrtho, то вам действительно нужно заменить ваш mat4 persp_proj с mat4 ortho_proj которая содержит ортогональную проекцию, которую вы хотите.

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]