Нарисуйте положение камеры в конкретном порту просмотра - PullRequest
2 голосов
/ 04 января 2011

Большая часть этого кода должна быть достаточно понятной.У меня есть функция отображения и функция просмотра порта.Есть два режима, это 4 маленьких порта просмотра в окне или один большой.У меня есть одна камера, которая может быть перемещена, и если в режиме 4 порта просмотра только 3 фиксированных угла.Дело в том, что я хочу, чтобы положение свободных движущихся камер отображалось на 3 других портах просмотра.Я пытался сделать это, рисуя сферы с помощью opengl, но проблема в том, что тогда позиция в бесплатной роуминговой камере тоже прорисовывается, поскольку она показывает ту же сцену.

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

Рисование сцены один раз с показом объекта камеры для трех окон просмотра, визуализация в текстуру.Очистить и нарисовать сцену без рендеринга объекта в текстуру, а затем сшить их вместе перед тем, как на самом деле нарисовать сцену. Это похоже на много работы для чего-то, что должно быть легко.этот объект в специальном окне просмотра.

Ответы [ 3 ]

0 голосов
/ 08 января 2011

Я думаю, что это будет легко, если вы просто нарисуете точку, потому что, если вы хотите увидеть точку в окне просмотра, ее центр должен быть в окне просмотра, в противном случае ничего из этого не отображается, даже если вы установили огромный размер точки.Тогда у вас есть 2 варианта устранения эффекта мерцания (например, если вы поместите 2 квадрата в одну и ту же возможность, они будут мерцать один над другим).Вы можете просто переместить эту точку немного позади камеры или использовать ненулевое значение для ближней плоскости отсечения при вызове glFrustrum / gluPerspective ... и хорошо, если вы обновляете положение точки каждый раз, когда вы перемещаете камеру, у вас нет шансов увидеть эту точку в вашей движущейся камере иВы можете использовать одну сцену.

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

0 голосов
/ 04 февраля 2011

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

0 голосов
/ 04 января 2011

Почему бы не сделать этот единственный объект Sphere (или объект, ответственный за рисование сферы) осведомленным о «текущем окне просмотра» (который в вашем коде является переменной what) и не позволить ему быть невидимым, если видовой экран?

Это решение в точности соответствует используемой здесь логике, звучит и просто, и правильно.

Более общим решением было бы присвоить каждой «камере» идентификатор GUID и сделать его доступным для объекта, ответственного за рисование камер, для проверки GUID «камеры», привязанной к области просмотра, которая визуализируется в данный момент. Если они оказываются равными, игнорируйте объект камеры во время этого прохода прорисовки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...