最近在做一款激光雷达的项目,要求将激光雷达的数据绘制为点云,并且定时将渲染的点云保存为图片,同时将此刻的点云数据保存到本地,后续通过图片调出当时的点云数据并重新渲染,目前C#调用OpenGL的库还算方便,且方法与C++高度相似。以下代码为将OpenGL渲染出来的图像生成Bitmap,选用的NuGet上的SharpGL库。
/// <summary>
/// 把OpenGL渲染的内容转换为图片。
/// </summary>
/// <param name="x">起始坐标<paramref name="x"/>(左下角为0,0)</param>
/// <param name="y">起始坐标<paramref name="y"/>(左下角为0,0)</param>
/// <param name="width">宽度</param>
/// <param name="height">高度</param>
/// <param name="filename">文件名</param>
/// <param name="openGL">OpenGL对象</param>
public void SaveToBitmap(int x, int y, int width, int height, string filename, SharpGL.OpenGL openGL)
{
var lo