zoukankan      html  css  js  c++  java
  • 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的学习文章均参考该作者的博客

    我驰骋天下,守你盛世繁华
  • 相关阅读:
    正确显示textarea中输入的回车和空格
    HmacSHA256算法(C# 和 Java)
    Java RSA分段加密
    穿越古代我能做啥?
    DOS常用命令
    C#泛型学习
    一步一步搭建Nuget私服
    深入理解HTTP协议
    PowerDesigner设置code和name不联动的方法
    log4net通过代码控制按分类输出
  • 原文地址:https://www.cnblogs.com/lotuses/p/11357893.html
Copyright © 2011-2022 走看看