示例#1
0
		private PixelData RenderToTexture(int width, int height, Action<Canvas> renderMethod)
		{
			PixelData pixelData;

			using (Texture texture = new Texture(width, height, TextureSizeMode.NonPowerOfTwo))
			using (RenderTarget renderTarget = new RenderTarget(AAQuality.Off, texture))
			using (DrawDevice device = new DrawDevice())
			{
				device.Perspective = PerspectiveMode.Flat;
				device.VisibilityMask = VisibilityFlag.AllGroups | VisibilityFlag.ScreenOverlay;
				device.RenderMode = RenderMatrix.OrthoScreen;
				device.Target = renderTarget;
				device.ViewportRect = new Rect(renderTarget.Width, renderTarget.Height);

				device.PrepareForDrawcalls();
				{
					Canvas canvas = new Canvas(device);
					renderMethod(canvas);
				}
				device.Render(ClearFlag.All, ColorRgba.TransparentBlack, 1.0f);

				pixelData = texture.GetPixelData();
			}

			return pixelData;
		}