Используя OpenTK, я создал окно (800x600) с вертикальным FOV 90 °. Я хочу сделать 2D-игру с фоновым изображением, которое подходит для всего экрана. Что я хочу - это плоскость с переменной z координатой как RectangleF.Получите границы плоскости, видимые с определенной координатой z
В настоящее время мой код:
var y = (float)(Math.Tan(Math.PI/4) * z);
return new RectangleF(aspectRatio * -y, -y, 2 * aspectRatio * y, 2 * y);
Прямоугольник рассчитывается это всегда немного мал, этот эффект, кажется, уменьшается с увеличением г. Надеюсь, что кто-то найдет мою ошибку.
Ну, я на самом деле планировал использовать перспективу масштабирования и, возможно, некоторые 3D-расширения, поэтому переход на орто не является лучшим решением. Кроме того, я больше хочу знать свою ошибку, чем обход. – timedt
@timedev Использование ортопроекции для рисования 2D не является обходным путем, это правильный способ делать вещи. Даже в 3D-играх 2D-оверлеи рисуются с использованием ортопроекций. Чтобы увеличить масштаб, вы можете изменить ортопроекцию так: http://www.opengl.org/discussion_boards/showthread.php/132061-help-with-orthographic-zoom – Ani
@timedev: Это не обходной путь. Это единственный правильный способ и лучшее решение для этого. Никогда не пытайтесь чрезмерно усложнять ситуацию. OpenGL не является сценографом. Вы * предположили *, чтобы переключать прогнозы там, где это необходимо. – datenwolf