【发布时间】:2015-02-23 22:18:20
【问题描述】:
我在一个窗口窗体中有一个 XNA 窗口,当我调整窗口大小时遇到了问题。
我想要的行为是渲染的立方体根本不动。因此,如果屏幕右侧有第二个立方体,并且用户将窗口的大小调整到右侧,那么第二个立方体就会出现。所以基本上调整窗口大小对渲染的元素根本没有影响。
但是当我调整窗口大小时,例如向右拖动,立方体也会向右移动 sad.png 当我向下拖动窗口时,立方体会慢慢放大。
这是立方体每个四边形的绘制代码:
GraphicsDevice dev = Core.Device;
dev.BlendState = BlendState.Opaque;
dev.DepthStencilState = DepthStencilState.Default;
dev.SetVertexBuffer(_vb);
dev.Indices = _ib;
effect.View = Matrix.CreateLookAt(new Vector3(0, 0, 150), Vector3.Zero, Vector3.Up);
effect.Projection = Matrix.CreatePerspectiveFieldOfView(MathHelper.PiOver4, dev.Viewport.AspectRatio, 0.1f, 10000.0f);
effect.World = Matrix.Identity;
effect.EnableDefaultLighting();
effect.Texture = Texture;
effect.CurrentTechnique.Passes[0].Apply();
dev.DrawIndexedPrimitives(PrimitiveType.TriangleList, 0, 0, vertices.Length, 0, indices.Length / 3);
我正在使用来自 xna 网站的 winforms/xna 示例。当窗口被调整大小时,设备被重置,并且后台缓冲区的宽度和高度被设置为 xna 窗口的宽度和高度。
这意味着Viewport.AspectRatio 得到更新,3d 立方体不会被拉伸。现在我只需要他们的立场不变。
有人知道我还能尝试什么吗?
【问题讨论】:
标签: c# winforms 3d xna projection