Может ли кто-нибудь помочь мне со следующим?
Проще говоря:
У меня есть геометрия прямоугольника, определяемая 4 вершинами {x, y, z} следующим образом:
double[] vertices = new double[12] { -5, 3, 0, 5, 3, 0, 5, -3, 0, -5, -3, 0 };
Я рисую прямоугольник со следующим:
GL.VertexPointer(3, VertexPointerType.Double, 0, vertices);
GL.DrawArrays(BeginMode.LineLoop, 0, vertices.Length / 3);
Я использую проекцию Orthographi c, и мой код установки окна просмотра:
int nWidth = ClientRectangle.Width;
int nHeight = ClientRectangle.Height;
GL.Viewport(0, 0, nWidth, nHeight);
GL.MatrixMode(MatrixMode.Projection);
GL.LoadIdentity();
GL.MatrixMode(MatrixMode.Modelview);
GL.LoadIdentity();
m_orthogonalProjectionTop = 3.05;
m_orthogonalProjectionLeft = -5.05;
m_orthogonalProjectionRight = 5.05;
m_orthogonalProjectionBottom = -3.05;
GL.Ortho(m_orthogonalProjectionLeft, m_orthogonalProjectionRight, m_orthogonalProjectionBottom, m_orthogonalProjectionTop, -1, 1);
Это работает как я будет ожидать. Прямоугольник почти полностью заполняет все окно рендеринга (оно светло-синее на скриншоте ниже):
(ранее я писал, что не могу получить это начальное поведение для работы, предыдущий пост , поэтому этот вопрос может показаться мне знакомым, но эта часть уже решена).
Теперь вот моя проблема:
В моем коде рендеринга вместо простого вызова функции рендеринга:
RenderRectangle();
Я вместо этого вызываю:
GL.PushMatrix();
GL.Rotate(270, 0.0, 0.0, 1.0);
RenderRectangle();
GL.PopMatrix();
И я изменяю свой видовой экран так, чтобы вместо:
GL.Ortho(m_orthogonalProjectionLeft, m_orthogonalProjectionRight, m_orthogonalProjectionBottom, m_orthogonalProjectionTop, -1, 1);
Теперь у меня есть:
GL.Ortho(m_orthogonalProjectionBottom, m_orthogonalProjectionTop, m_orthogonalProjectionLeft, m_orthogonalProjectionRight, -1, 1);
(чтобы я поменял местами x и y области просмотра)
Тогда я ожидал, что мой прямоугольник все еще почти заполнит экран. То, что я на самом деле вижу, это то, что верхняя часть прямоугольника в порядке, она кажется просто застенчивой в верхней части окна, левая и правая стороны также в порядке, но нижняя часть прямоугольника находится за пределами экрана (путем установки нижней части окно просмотра немного более негативное, я вижу его, но его видимость зависит от размера окна).
Вот скриншот, вы можете видеть, что нижняя часть прямоугольника находится за пределами светло-синей области:
Может кто-нибудь сообщить, что я делаю не так?
Спасибо, Митч.