Как исправить «обрезку» фигур в OpenGL (lwjgl)? - PullRequest
2 голосов
/ 29 января 2020

Я делаю проект на OpenGL 3D. У меня есть несколько фигур, и когда я поворачиваю камеру (сцену), цифры кажутся go за ее пределами (или за пределами области просмотра)

Нормальное состояние:

Normal condition

Обрезанная фигура:

Cropped figure

Как увеличить область просмотра? Или что можно сделать в этой ситуации?

Сейчас я пытаюсь:

        glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
        glDepthFunc(GL_LEQUAL);
        glfwPollEvents();
        glPushMatrix();
        glEnable(GL_BLEND);
        glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
        GL11.glViewport(0, 0, width, height);
        GL11.glMatrixMode(GL11.GL_PROJECTION);
        glLoadIdentity();

Но это не приносит результатов.

1 Ответ

1 голос
/ 29 января 2020

Кажется, что объект ограничен ближней плоскостью проекции ортографической c. Поменяйте ближний самолет, чтобы решить проблему. Матрица проекции orthographi c устанавливается как glOrtho.

. По умолчанию матрица проекции имеет вид Identity matrix . Это то же самое, что вы сделали бы

GL11.glOrtho(-1, 1, -1, 1, 1, -1);

Увеличьте расстояние до ближней и дальней плоскости, чтобы решить проблему. например:

GL11.glMatrixMode(GL11.GL_PROJECTION);
glLoadIdentity();
GL11.glOrtho(-1, 1, -1, 1, 10, -10);
...