【发布时间】:2015-03-23 00:00:01
【问题描述】:
我正在尝试创建一个正交视图矩阵,从场景中查看场景(自上而下视图的 90 度角)。
这是我当前的代码尝试:
ortho = Matrix4.CreateOrthographicOffCenter(-500f / side_zoom + (float)side_translate.X, 500f / side_zoom + (float)side_translate.X,
500f / side_zoom + (float)side_translate.Y, -500f / side_zoom + (float)side_translate.Y, -100000, 100000) * Matrix4.CreateRotationX(90);
基本上,CreateOrthographicOffCenter() * RotationX(90)
乍一看,这按预期工作。但是当你放大或平移到侧面时,形状会严重扭曲。
这是标准缩放的场景,按预期渲染:
这是放大的时候:
如您所见,尽管渲染的是静态模型,但镶嵌矩形已分为三角形和多边形。场景的所有其他视角保持不变。还有一点值得注意的是,所有模型都在到达顶部的 1/4 处停止。再多的努力也不会让他们超越界限,他们的界限总是在那里结束。它会在那里渲染线条,即使您希望线条超出限制并停止渲染。
最后一点,Ortho.inverted() * screen_coord_of_mouse 返回正确的 X 轴坐标,但 Y 轴坐标位置严重错位。同样的方法也适用于自上而下的视图。
【问题讨论】:
标签: c# opengl matrix graphics opentk