朋友做毕业设计需要通过采集下位机数据绘制一个立方体,帮忙查了一下资料,发现用OpenGL可以很好的解决问题,鼓弄了2个小时弄出了这个示例程序,虽然简陋但是可以提供给朋友使用了,下面就放出代码和效果图给大家:

核心代码:
private
void
openGLControl1_OpenGLDraw(
object
sender, PaintEventArgs e)
{
//
创建一个GL对象
SharpGL.OpenGL gl
=
this
.openGLControl1.OpenGL;
gl.Clear(OpenGL.COLOR_BUFFER_BIT
|
OpenGL.DEPTH_BUFFER_BIT);
//
清空屏幕
gl.LoadIdentity();
//
重置
gl.Translate(
0.0f
,
0.0f
,
-
6.0f
);
//
设置坐标,距离屏幕距离为6
gl.Rotate(_x,
1.0f
,
0.0f
,
0.0f
);
//
绕X轴旋转
gl.Rotate(_y,
0.0f
,
1.0f
,
0.0f
);
//
绕Y轴旋转
gl.Rotate(_z,
0.0f
,
0.0f
,
1.0f
);
//
绕Z轴旋转
gl.Begin(_model);
//
绘制立方体
gl.Color(
0.0f
,
1.0f
,
0.0f
);
//
设置颜色
//
绘制其中一个面
gl.Vertex(
1.0f
,
1.0f
,
-
1.0f
);
gl.Vertex(
-
1.0f
,
1.0f
,
-
1.0f
);
gl.Vertex(
-
1.0f
,
1.0f
,
1.0f
);
gl.Vertex(
1.0f
,
1.0f
,
1.0f
);
//
如下类同
gl.Color(
1.0f
,
0.5f
,
0.0f
);
gl.Vertex(
1.0f
,
-
1.0f
,
1.0f
);
gl.Vertex(
-
1.0f
,
-
1.0f
,
1.0f
);
gl.Vertex(
-
1.0f
,
-
1.0f
,
-
1.0f
);
gl.Vertex(
1.0f
,
-
1.0f
,
-
1.0f
);
gl.Color(
1.0f
,
0.0f
,
0.0f
);
gl.Vertex(
1.0f
,
1.0f
,
1.0f
);
gl.Vertex(
-
1.0f
,
1.0f
,
1.0f
);
gl.Vertex(
-
1.0f
,
-
1.0f
,
1.0f
);
gl.Vertex(
1.0f
,
-
1.0f
,
1.0f
);
gl.Color(
1.0f
,
1.0f
,
0.0f
);
gl.Vertex(
1.0f
,
-
1.0f
,
-
1.0f
);
gl.Vertex(
-
1.0f
,
-
1.0f
,
-
1.0f
);
gl.Vertex(
-
1.0f
,
1.0f
,
-
1.0f
);
gl.Vertex(
1.0f
,
1.0f
,
-
1.0f
);
gl.Color(
0.0f
,
0.0f
,
1.0f
);
gl.Vertex(
-
1.0f
,
1.0f
,
1.0f
);
gl.Vertex(
-
1.0f
,
1.0f
,
-
1.0f
);
gl.Vertex(
-
1.0f
,
-
1.0f
,
-
1.0f
);
gl.Vertex(
-
1.0f
,
-
1.0f
,
1.0f
);
gl.Color(
1.0f
,
0.0f
,
1.0f
);
gl.Vertex(
1.0f
,
1.0f
,
-
1.0f
);
gl.Vertex(
1.0f
,
1.0f
,
1.0f
);
gl.Vertex(
1.0f
,
-
1.0f
,
1.0f
);
gl.Vertex(
1.0f
,
-
1.0f
,
-
1.0f
);
gl.End();
//
结束绘制
}
分享了一个使用OpenGL在C#窗体程序中实现立方体多边形旋转的示例教程,适用于解决毕业设计中通过采集下位机数据绘制三维图形的需求。

5137

被折叠的 条评论
为什么被折叠?



