Пример #1
0
 private Matrix GetUVTransform(Texture2D t, Vector2 offset, float scale, Viewport v)
 {
     return
         (Matrix.CreateScale(t.Width, t.Height, 1f) *
          Matrix.CreateScale(scale, scale, 1f) *
          Matrix.CreateTranslation(offset.X, offset.Y, 0f) *
          Camera.GetView(-scale + 1) *
          Matrix.CreateScale(1f / v.Width, 1f / v.Height, 1f));
 }
Пример #2
0
        private void DrawCamera(Camera c)
        {
            c.SetViewport();
            _s.Begin(transformMatrix: c.GetView(-1));
            _s.Draw(_apos, new Vector2(0, 0), Color.White);
            _s.Draw(_apos, new Vector2(200, 0), Color.White);
            _s.End();

            _basicEffect.World      = Matrix.Identity;
            _basicEffect.View       = c.GetView3D();
            _basicEffect.Projection = c.GetProjection3D();

            _basicEffect.VertexColorEnabled = true;

            GraphicsDevice.SetVertexBuffer(_vertexBuffer);

            RasterizerState rasterizerState = new RasterizerState {
                CullMode = CullMode.None
            };

            GraphicsDevice.RasterizerState = rasterizerState;

            foreach (EffectPass pass in _basicEffect.CurrentTechnique.Passes)
            {
                pass.Apply();
                GraphicsDevice.DrawPrimitives(PrimitiveType.TriangleList, 0, 2);
            }

            _s.Begin(transformMatrix: c.View);
            _s.Draw(_apos, Vector2.Zero, Color.White);
            _s.Draw(_apos, new Vector2(200, 0), Color.White);
            _s.End();
            _s.Begin();
            _s.Draw(_apos, -c.VirtualViewport.XY + c.WorldToScreen(_mouseWorld), Color.White);
            _s.End();

            c.ResetViewport();
        }