hjoykim / THREE

c# port of Three.js
MIT License
127 stars 24 forks source link

Take screenshot #45

Open merco opened 5 days ago

merco commented 5 days ago

how can it be possible to have a screenshot of the displayed image?

maybe even offscreen?

hjoykim commented 4 days ago

hello,

I'm not sure what screen you want to capture, but if you want to capture the rendered screen, you can do so using the code below.

private unsafe void CopyScreenToTexture_And_SaveToFile(string fileName)
{
    int size = renderer.Width * renderer.Height*4;

    byte[] buffers = new byte[size];
    fixed (byte* p = buffers) {
        GL.ReadPixels(0, 0, renderer.Width, renderer.Height, All.BgraImg, All.UnsignedByte, (IntPtr)p);
    }
    SKBitmap bitmap = new SKBitmap(renderer.Width, renderer.Height);
    using (var image = SKImage.FromBitmap(buffers.ToSKBitMap(renderer.Width, renderer.Height)))
    using (var data = image.Encode(SKEncodedImageFormat.Jpeg, 100))
    using (var stream = File.OpenWrite("screencapture.jpg"))
    {
        data.SaveTo(stream);
    }
}
merco commented 4 days ago

@hjoykim

Is there a mirror?

immagine