zoukankan      html  css  js  c++  java
  • OpenGL小试牛刀第一季

    效果截图:图片
    代码展示:using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Data;
    using System.Drawing;
    using System.Text;
    using System.Windows.Forms;
    using SharpGL;
    namespace Example1
    {
        public partial class FormExample : Form
        {
            public FormExample()
            {
                InitializeComponent();
                rbfull.Checked = true;
            }
            /// <summary>
            /// 默认绘画模式为线条
            /// </summary>
            private uint _model = OpenGL.LINE_LOOP;
            /// <summary>
            /// X轴坐标
            /// </summary>
            private float _x = 0;
            /// <summary>
            /// Y轴坐标
            /// </summary>
            private float _y = 0;
            /// <summary>
            /// Z轴坐标
            /// </summary>
            private float _z = 0;
            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();      // 结束绘制
            }
            private void rbfull_CheckedChanged(object sender, EventArgs e)
            {
                _model = OpenGL.QUADS;
            }
            private void rbline_CheckedChanged(object sender, EventArgs e)
            {
                _model = OpenGL.LINE_LOOP;
            }
            private void tbX_Scroll(object sender, EventArgs e)
            {
                int x = tbX.Value;
                _x = x;
                labX.Text = "X:" + x;
            }
            private void tbY_Scroll(object sender, EventArgs e)
            {
                int y = tbY.Value;
                _y = y;
                labY.Text = "Y:" + y;
            }
            private void tbZ_Scroll(object sender, EventArgs e)
            {
                int z = tbZ.Value;
                _z = z;
                labZ.Text = "Z:" + z;
            }
            private void btnReset_Click(object sender, EventArgs e)
            {
                _x = _y = _z = 0;
            }
        }
  • 相关阅读:
    Ubuntu安装vsftp软件
    linux下LNMP环境安装笔记
    thinkphp在app接口开发过程中的通讯安全认证
    thinkphp在app接口开发过程中的通讯数据的封装
    thinkphp微信开发之jssdk拉取卡券及卡券的核销
    thinkphp微信开发之jssdk图片上传并下载到本地服务器
    用thinkphp进行微信开发的整体设计思考
    我常用的自定义函数之rmdir php删除目录及目录下的所有文件
    我常用的自定义函数之p 用于打印数据,调试代码很方便
    我常用的自定义函数之clean php自动过滤功能
  • 原文地址:https://www.cnblogs.com/zzkgis/p/3742299.html
Copyright © 2011-2022 走看看