OpenGL рядом с плоскостью зажима

Я работаю над интерактивными сценами для курса компьютерной графики. Я создал программу, которая будет генерировать цветные кубики, и позволю мне вращать их с помощью клавиатуры. Однако их разрезает плоскость ближней обрезки моей камеры:

Цветные кубики обрезаются

Я пытался использовать gluPerspective, но документация OpenGL не дает никаких примеров его использования. Я обнаружил, что он используется в примере программы в Интернете, и наполовину тиражировал их код:

glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluPerspective( 65, 1, 0.01, 100 );
glMatrixMode(GL_MODELVIEW);

Какие-нибудь мысли?

ОБНОВЛЕНИЕ: Как предложено в комментариях ниже, я попытался использовать glFrustum вместо следующего кода:

glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glFrustum( -0.5, 0.5, -0.5, 0.5, 0.1, 100 );
glMatrixMode(GL_MODELVIEW);

Опять не было никакой разницы. Я не толкаю полученные матрицы правильно или что-то?

1 ответ

Возможно, вам нужно переместить ваши объекты немного дальше от камеры. Сейчас кажется, что они ближе, чем 0,0.

Учитывая ваше обновление: "Я переместил кубы на целую единицу от камеры, и теперь, когда они вращаются, они обрезаются как ближним, так и дальним плоскостями отсечения", ваши кубы могут быть слишком большими для вашей глубины отсечения (100–0,1). Отодвиньте кубики от камеры на 50 и установите плоскости отсечения на 0,1 .. 1000, чтобы убедиться, что все подходит.

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

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