LINUX.ORG.RU

OpenGL z coordinate


0

1

если сделать translate(0 0 -10) перед отрисовкой, рисуемый объект должен быть виден? уменьшен? Вот есть код - http://paste.lisp.org/display/121313, в нём при zoom от 1.4499997 до -1.4999996 объект виден, при выходе из этого диапазона ничего не видно

Проверь плоскости отсечения, из-за них такое может происходить.
P.S. код не смотрел.

trex6 ★★★★★
()

> если сделать translate(0 0 -10) перед отрисовкой, рисуемый объект должен быть виден? уменьшен?
Зависит от матрицы проекции.

Raving_Zealot ★★
()

> рисуемый объект должен быть виден? уменьшен?

Если он в итоге (после всех трансформаций) не выходит за область отсечения [которая, насколько я понимаю, есть куб с вершинами в точках (-1,-1,-1) (1,1,1)], то будет виден.

Уменьшен - в вашем случае нет.

Kirakishou
()
Ответ на: комментарий от Kirakishou

хочу чтобы при удалении точки отрисовки фигуры она была видна, а не пропадала.

pseudo-cat ★★★
() автор топика
Ответ на: комментарий от Raving_Zealot

в смысле от операций сделанных ранее над ней?

pseudo-cat ★★★
() автор топика
Ответ на: комментарий от pseudo-cat

> как задать этот куб?

Этот куб не задаётся в принципе, вместо этого вы устанавливаете projection и modelview matrix такими, чтобы объекты в итоге в этот самый куб попадали. Например, с помощью glFrustum или glPerspective.

почему, ведь я использую матрицу проекций?

Потому, что ваша матрица проекций такая, что она не обеспечиваает уменьшения объекта (точно также, как этого не обеспечивает ортогональная проекция).

хочу чтобы при удалении точки отрисовки фигуры она была видна, а не пропадала.

Тогда нужно дополнительно использовать glScale (или всё считать руками), чтобы ваш объект не вылезал за плоскости отсечения.

Вообще, вам следует хорошенько разобраться с матрицами, прежде чем двигаться дальше.

Kirakishou
()
Ответ на: комментарий от pseudo-cat

Как минимум тем, что в нём оперируют modelview матрицой. А вообще я вам посоветую для изучения OpenGL Superbible, а не tutorials в сети.

Kirakishou
()
Ответ на: комментарий от pseudo-cat

Добавь после строк:

glMatrixMode(GL_PROJECTION);
glLoadIdentity();

следующие строки:

gluPerspective(45.0f, 1.0f, 0.1f, 100.0f);
glMatrixMode(GL_MODELVIEW);

Raving_Zealot ★★
()
Ответ на: комментарий от Kirakishou

Kirakishou, Raving_Zealot, ага, всё понял ошибку, спасибо

pseudo-cat ★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.