1、事例一: 一个三角形、一个正方形(Vertex)

/* 注:
 *    修改项目属性(右击属性——>应用程序——>目标框架——>.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的学习文章均参考该作者的博客

posted @ 2019-08-15 14:47  一叶之灵  阅读(371)  评论(0编辑  收藏  举报