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的学习文章均参考该作者的博客

    我驰骋天下,守你盛世繁华
  • 相关阅读:
    mongodb 修改最大连接数
    js hook eval
    js hook ajax
    js hook cookie
    windows启动redis命令行
    springboot结合redis使用token实现登录注销功能
    springboot实现滑动验证码
    Java读取指定路径文件中的所有资源
    com.alibaba.fastjson.annotation.JSONField依赖
    springboot和session实现验证码功能
  • 原文地址:https://www.cnblogs.com/lotuses/p/11357893.html
Copyright © 2011-2022 走看看