/* 注: * 修改项目属性(右击属性——>应用程序——>目标框架——>.NET Framework 4), * 否则会发生“SharpGL”命名空间引用错误————"OpenGLControl" **/ 1、事例一 ———— 一个三角形、一个正方形(Vertex) namespace sharpGLTest01 { public partial class Form1 : Form { public Form1() { InitializeComponent(); } /* OpenGLInitialized(OpenGL初始化)的事件句柄 * 这个事件的一个主要用途是为用户提供需要的安装逻辑。 * **/ //初始化 private void openGLControl1_OpenGLInitialized(object sender, EventArgs e) { //OpenGL gl = openGLControl1.OpenGL; /*获得一个OpenGLControl控件的引用*/ //gl.ClearColor(0,0,0,0); /*glClearColor方法来设置场景的背景颜色*/ } /* OpenGLDraw事件句柄 * 这是一个OpenGL绘制事件: * **/ //画图 private void openGLControl1_OpenGLDraw(object sender, PaintEventArgs e) { SharpGL.OpenGL gl = this.openGLControl1.OpenGL; //清除深度缓存 gl.Clear(OpenGL.GL_COLOR_BUFFER_BIT | OpenGL.GL_DEPTH_BUFFER_BIT); //重置当前指定的矩阵为单位矩阵,将当前的用户坐标系的原点移到了屏幕中心 gl.LoadIdentity(); //坐标轴变换位置到(-1.5,0,-6) gl.Translate(-1.5f, 0f, -6f); gl.Begin(OpenGL.GL_TRIANGLES); { //顶点 gl.Vertex(0.0f, 1.0f, 0.0f); //左端点 gl.Vertex(-1.0f, -1.0f, 0.0f); //右端点 gl.Vertex(1.0f, -1.0f, 0.0f); } gl.End(); //把当前坐标系右移3个单位,注意此时是相对上面(-1.5,0,-6)点定位 gl.Translate(3f, 0f, 1f); gl.Begin(OpenGL.GL_QUADS); { gl.Vertex(-1.0f, 1.0f, 0.0f); gl.Vertex(1.0f, 1.0f, 0.0f); gl.Vertex(1.0f, -1.0f, 0.0f); gl.Vertex(-1.0f, -1.0f, 0.0f); } gl.End(); gl.Flush(); //强制刷新 } /* OpenGLDraw事件句柄 * 这是一个OpenGL绘制事件: * **/ //调整 private void openGLControl1_Resize(object sender, EventArgs e) { //OpenGL gl = openGLControl1.OpenGL; //// 设置当前矩阵模式,对投影矩阵应用随后的矩阵操作 //gl.MatrixMode(OpenGL.GL_PROJECTION); //// 重置当前指定的矩阵为单位矩阵,将当前的用户坐标系的原点移到了屏幕中心 //gl.LoadIdentity(); //// 创建透视投影变换 //gl.Perspective(30.0f, (double)Width / (double)Height, 5, 100.0); //// 视点变换 //gl.LookAt(-5, 5, -5, 0, 0, 0, 0, 1, 0); //// 设置当前矩阵为模型视图矩阵 //gl.MatrixMode(OpenGL.GL_MODELVIEW); } } }
参考文章:https://www.cnblogs.com/hackpig/p/5770458.html
说明:关于SharpGL的学习文章均参考该作者的博客