OpenGL(7)--渲染结果截图

渲染结果截图

    OpenGL渲染的结果通常是3D图像,如果我们想把3D图像转换成2D图像保存下来呢?较为复杂的方法是利用帧缓存技术(FBO)来实现,我这里总结一种自用的较为简便的方式。仍然以WPF开发为例介绍,如下的代码实现了点击一个Button,就把渲染结果存为一副24bit的bmp图像。
 private void save_MouseLeftButtonDown(object sender, MouseButtonEventArgs e)
        {

            OpenGL gl = openGLControl.OpenGL;
            int width = 680; 
            int height = 665;

            byte[] pixels = new byte[(int)(3 * width * height)];

            gl.ReadPixels(0, 0, width, height, OpenGL.GL_RGB, OpenGL.GL_UNSIGNED_BYTE, pixels);

            System.Drawing.Rectangle retc = new System.Drawing.Rectangle();
            retc.Width = width;
            retc.Height = height;
            Bitmap bmp = new Bitmap(width, height);

            System.Drawing.Imaging.BitmapData data = bmp.LockBits(retc, System.Drawing.Imaging.ImageLockMode.WriteOnly,
  System.Drawing.Imaging.PixelFormat.Format24bppRgb);
  gl.ReadPixels(0, 0, width, height, OpenGL.GL_BGR, OpenGL.GL_UNSIGNED_BYTE, data.Scan0);

            bmp.UnlockBits(data);

            bmp.RotateFlip(RotateFlipType.RotateNoneFlipY);

            bmp.Save(@"Snapshot\head.bmp");
        }
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值