OpenGL小试牛刀第一季
生活随笔
收集整理的這篇文章主要介紹了
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;
??????? }
??? }
}?
代碼展示: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;
??????? }
??? }
}?
轉載于:https://www.cnblogs.com/zzkgis/p/3742299.html
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
以上是生活随笔為你收集整理的OpenGL小试牛刀第一季的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【转】GPS误差来源
- 下一篇: 如何通过一个编程获得IP地址归属地的最简