71 lines
1.5 KiB
C#
71 lines
1.5 KiB
C#
using SharpGL;
|
|
using SharpGL.SceneGraph;
|
|
using System;
|
|
using System.Collections.Generic;
|
|
using System.Drawing;
|
|
using System.Windows.Forms;
|
|
using Telerik.WinControls.UI;
|
|
|
|
namespace HexcalMC.Base
|
|
{
|
|
public partial class SharpGLViewportControl : UserControl
|
|
{
|
|
private readonly OpenGLControl openGLControl;
|
|
private List<Point3D> pointCloud;
|
|
|
|
public SharpGLViewportControl()
|
|
{
|
|
InitializeComponent();
|
|
|
|
openGLControl = new OpenGLControl
|
|
{
|
|
Dock = DockStyle.Fill
|
|
};
|
|
|
|
Controls.Add(openGLControl);
|
|
|
|
openGLControl.OpenGLInitialized += OpenGLControl_OpenGLInitialized;
|
|
openGLControl.OpenGLDraw += OpenGLControl_OpenGLDraw;
|
|
|
|
pointCloud = new List<Point3D>();
|
|
}
|
|
|
|
public void SetPointCloud(List<Point3D> points)
|
|
{
|
|
pointCloud = points;
|
|
openGLControl.Invalidate();// 重绘
|
|
}
|
|
|
|
private void OpenGLControl_OpenGLInitialized(object sender, EventArgs e)
|
|
{
|
|
var gl = openGLControl.OpenGL;
|
|
gl.Enable(OpenGL.GL_DEPTH_TEST);
|
|
|
|
// 设置清除背景色为黑色
|
|
gl.ClearColor(0.0f, 0.0f, 1.0f, 0.0f);
|
|
}
|
|
|
|
private void OpenGLControl_OpenGLDraw(object sender, RenderEventArgs args)
|
|
{
|
|
var gl = openGLControl.OpenGL;
|
|
gl.Clear(OpenGL.GL_COLOR_BUFFER_BIT | OpenGL.GL_DEPTH_BUFFER_BIT);
|
|
|
|
gl.LoadIdentity();
|
|
|
|
gl.Begin(OpenGL.GL_POINTS);
|
|
gl.Color(Color.White);
|
|
|
|
foreach (var point in pointCloud)
|
|
{
|
|
// 设置点的颜色
|
|
gl.Color(1.0f, 0.0f, 0.0f); // 红色
|
|
|
|
// 设置点的大小
|
|
gl.PointSize(5.0f); // 大小为5个单位
|
|
gl.Vertex(point.X, point.Y, point.Z);
|
|
}
|
|
|
|
gl.End();
|
|
}
|
|
}
|
|
} |