我有一個Windows窗體內的XNA窗口,當我調整窗口大小時遇到問題。停止調整窗口大小時移動的3D對象[XNA/WinForms/C#]
我想要的行爲是讓渲染的立方體根本不移動。因此,如果屏幕右側有第二個立方體,並且用戶將窗口大小調整爲右側,則第二個立方體將進入視野。所以基本上調整窗口的大小根本不會影響渲染的元素。
但是,當我調整窗口的大小,例如向右拖動,立方體也向右移動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立方體不會拉伸。現在我只需要他們的立場不要改變。
有誰知道我還能嘗試什麼?
謝謝這是我一直在尋找的解決方案 – LynchDev 2015-02-24 12:51:33