private void RenderMouseOverTiles(RenderComposer composer) { var mouseRect = new Rectangle(Engine.Renderer.Camera.ScreenToWorld(Vector2.Zero), new Vector2(1, 1)) { Center = Engine.Renderer.Camera.ScreenToWorld(Engine.InputManager.MousePosition) }; composer.RenderOutline(new Vector3(mouseRect.Position, 10), mouseRect.Size, Color.Magenta, 2); //composer.PushModelMatrix(Matrix4x4.CreateTranslation(new Vector3(-mouseRect.Position, 0))); composer.RenderTo(_frameBuffer); _drawMemory.Clear(); quadTree.GetObjects(mouseRect, ref _drawMemory); for (var i = 0; i < _drawMemory.Count; i++) { var tile = _drawMemory[i]; var a = composer.GetBatch(); var data = a.GetData(null); data[0].Vertex = tile.Vertex0.ToVec3(); data[0].Color = new Color(50 + i, i, 0).ToUint(); data[1].Vertex = tile.Vertex1.ToVec3(); data[1].Color = new Color(i * 20, i, 0).ToUint(); data[2].Vertex = tile.Vertex2.ToVec3(); data[2].Color = new Color(i * 20, i * 20, 0).ToUint(); data[3].Vertex = tile.Vertex3.ToVec3(); data[3].Color = new Color(i, i * 20, 0).ToUint(); } composer.PushCommand(new ExecCodeCommand() { Func = () => { byte[] pixels = _frameBuffer.Sample(new Rectangle(Engine.InputManager.MousePosition, Vector2.One)); _lastMouseX = pixels[3]; _lastMouseY = pixels[2]; } }); //composer.PopModelMatrix(); composer.RenderTo(null); }