C#OpenGL(SharpGL)繪製可旋轉長方體
全域性欄位:
// X軸座標
private float _x = 0;
// Y軸座標
private float _y = 0;
//Z軸座標
private float _z = 0;
OpenGLOpenGLDraw事件:
//OpenGL繪圖事件
private voidmyOpenGL_OpenGLDraw(object sender,RenderEventArgs args)
{
SharpGL.OpenGL gl = new OpenGL(); //
gl.Clear(OpenGL.GL_COLOR_BUFFER_BIT | OpenGL.GL_DEPTH_BUFFER_BIT);
gl.LoadIdentity(); //清除深度快取
//重置模型觀察矩陣,我認為其實就是重置了三維座標軸的位置,將其初始化為原點
gl.Translate(0f, 0f, -6f); //最後一個引數為距離螢幕距離
//影象旋轉
gl.Rotate(_x, 1.0f, 0.0f, 0.0f); //
gl.Rotate(_y, 0.0f, 1.0f, 0.0f); // 繞Y軸旋轉
gl.Rotate(_z, 0.0f, 0.0f, 1.0f); // 繞Z軸旋轉
gl.Begin(OpenGL.GL_LINE_LOOP); // Start Drawing The Cube
//長方體6個面繪製(1)
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(); // DoneDrawing The Q
//(2)
gl.Begin(OpenGL.GL_LINE_LOOP);
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();
//(3)
gl.Begin(OpenGL.GL_LINE_LOOP);
gl.Vertex(-1.0f, 1.0f, 0.0f);
gl.Vertex(-1.0f, 1.0f, -1.0f);
gl.End();
//(4)
gl.Begin(OpenGL.GL_LINE_LOOP);
gl.Vertex(1.0f, 1.0f, 0.0f);
gl.Vertex(1.0f, 1.0f, -1.0f);
gl.End();
//(5)
gl.Begin(OpenGL.GL_LINE_LOOP);
gl.Vertex(1.0f, -1.0f, 0.0f);
gl.Vertex(1.0f, -1.0f, -1.0f);
gl.End();
//(6)
gl.Begin(OpenGL.GL_LINE_LOOP);
gl.Vertex(-1.0f, -1.0f, 0.0f);
gl.Vertex(-1.0f, -1.0f, -1.0f);
gl.End();
}
首先在From窗體中新增OpenGL的控制元件,新增OpenGLDraw事件,在事件中編寫對應繪圖程式碼。調整全域性變數_x,_y,_z的值可以實現影象的旋轉。
相關推薦
C#OpenGL(SharpGL)繪製可旋轉長方體
全域性欄位: // X軸座標 private float _x = 0; // Y軸座標 private float _y = 0; //Z軸座標 private float _z = 0;
OpenGL——點的繪製(使用OpenGL來繪製可旋轉座標系的螺旋線)
package com.example.opengl1; import java.nio.ByteBuffer; import java.nio.ByteOrder; import java.nio.FloatBuffer; import javax.microedi
opengles繪製可旋轉的球體
球體繪製類 package test.com.opengles6_1; import java.nio.ByteBuffer; import java.nio.ByteOrder; import java.nio.FloatBuffer; import java.uti
Android 系列 5.2使用OpenGL ES繪製旋轉立方體
5.2使用OpenGL ES繪製旋轉立方體 問題 您想建立一個基本的OpenGL ES應用程式。 解 建立一個GLSurfaceView和一個自定義渲染器,將繪製一個旋轉立方體。 討論 Android通過OpenGL ES API支援3D圖形,這是一種專為嵌入式裝置設計的O
C#使用Xamarin開發可移植移動應用(3.進階篇MVVM雙向綁定和命令綁定)附源碼
www. 變更 ges ntp image 上下文 判斷 接口 images 前言 系列目錄 C#使用Xamarin開發可移植移動應用目錄 源碼地址:https://github.com/l2999019/DemoApp 可以Star一下,隨意 - - 說點什麽.. 嗯..
C#使用Xamarin開發可移植移動應用進階篇(7.使用布局渲染器,修改默認布局),附源碼
頂部 urn hit .com move 應用開發 當前 namespace int 前言 系列目錄 C#使用Xamarin開發可移植移動應用目錄 源碼地址:https://github.com/l2999019/DemoApp 可以Star一下,隨意 - - 說點什麽..
C#使用Xamarin開發可移植移動應用進階篇(8.打包生成安卓APK並精簡大小),附源碼
demo page 模糊 icon 通過 itl 是不是 es2017 微軟 前言 系列目錄 C#使用Xamarin開發可移植移動應用目錄 源碼地址:https://github.com/l2999019/DemoApp 可以Star一下,隨意 - - 說點什麽.. 嗯,前
QT中給各控件增加背景圖片(可縮放可旋轉)的幾種方法
.net detail eight iou rotate art board 按鈕 previous 1. 給QPushButton 增加背景圖片:背景圖片可根據Button大小自由縮放。 [cpp] view plain copy vo
Canvas實現3D效果-可旋轉的立方體
獲得 操作 陰影 換算 http 取出 main TP 變換 摘要:Canvas畫布是一個二維平面,如何展示出3D效果?通過將三維空間中的Z軸抽取出來,將圖像的點投影到與Z軸垂直的平面上,在通過旋轉等變換效果,我們就能實現3D效果。 一、建立坐標系 1)立方體坐標系
2018牛客網暑期ACM多校訓練營(第三場)C Shuffle Cards(可持久化平衡樹/splay)
car 訓練營 shu cas queue math getchar() %d fir 題意 牌面初始是1到n,進行m次洗牌,每次抽取一段放到最前面。求最後的序列。 分析 神操作!!!比賽時很絕望,splay技能尚未點亮,不知道怎麽用。 殊不知,C++庫裏有rope
【Unity3D BezierCurve繪製曲線】動態新增路徑點繪製可調節曲線(三維空間)
近日,專案需求:前提:三維空間 1.動態新增(刪除)路徑點,通過兩個以上的路徑點來繪製曲線,刪除點之後不影響其他點繪製曲線; 2.每個路徑點都可以被拖拽發生位移,可以通過鎖定某個軸,使該軸不發生位移; 3.每個路徑點處有兩個可調節點(首尾只有一個調節點),可通過調節點來調節曲線切線(
openGL紋理繪製
#include <stdlib.h> #include <GL/glut.h> #define imageWidth 64 #define imageHeight 64 GLubyte image[imageWidth][imageHeight][3]; /*繪製一個簡
OpenGl基礎繪製二
渲染圖形的基本流程 1.建立GLSurfaceView 2.初始化渲染器 3.onSurfaceCreated(),onSurfaceChanged(),onDrawFrame()三個方法 4.著色器(頂點著色器,片元著色器) 5.頂點 顏色 紋理 6.繪製
在螢幕繪製一個旋轉的線框立方體(使用頂點快取和索引快取)
首先裡面還是有兩個基本的檔案:d3dUtility.h以及d3dUtility.cpp 裡面的主要內容就是實現Direct3D的初始化,以及模板函式的的實現,和訊息迴圈函式的宣告,回撥函式的宣告。 具體的解釋在部落格:在螢幕繪製一個三角形以及Direct3D初始化例程中有詳細的解釋,這裡
C++ Leetcode初級演算法之旋轉影象
給定一個 n × n 的二維矩陣表示一個影象。 將影象順時針旋轉 90 度。 說明: 你必須在原地旋轉影象,這意味著你需要直接修改輸入的二維矩陣。請不要使用另一個矩陣來旋轉影象。 示例 1: 給定 matrix = [ [1,2,3], [4,5,6], [7,8,9]
iOS Tabbar中間新增凸起可旋轉按鈕
前言 最近的專案中有需求在tabbar中間新增凸起按鈕,並且點選時按鈕要旋轉,看了仿閒魚的凸起,點選後是present出來View,而不是像常規的tabbar上新增一個頁面(親測,閒魚的超出Tabbar部分點選是沒有反應的,這是bug啊,下文對這個問題有詳解),所以不符合要求,經過一段摸索最後得的一個
canvas繪製可控制的行走的小人
素材img 程式碼 var Person = function (ctx) { /*繪製工具*/ this.ctx = ctx || document.querySelector('canvas').getContext('2d');
C語言實現BMP影象旋轉
實現影象旋轉,首先要對影象的儲存,影象的讀寫比較清楚,在此基礎上進行線性變換。以下程式碼為逆時針旋轉90度,後續會給出旋轉任意角度的程式碼: 核心還是掌握旋轉時的前後變換。變換的過程可以歸結為:首先將影象座標變換為數學座標,然後在數學座標上進行變換,然後在進行逆變換,得到在影象座
C語言實現BMP影象旋轉(任意角度)
實現對對任意角度的旋轉,具體數學推導網上找。如果各位讀者需要使用,只需要將開啟檔案的位置改為你的位置,輸入不同的角度即可: #include <Windows.h> #include <stdio.h> #include <stdlib.h> #incl
Linux C實現檔案拷貝可變色進度條顯示
printf的格式化輸出中,可以設定前景色和背景色,因此進度條的顏色可以通過printf的格式化輸出來實現;此外,進度條的實現主要依靠"\r"和"fflush(stdout)“來支援。”\r" 用來回到行首而不換行,fflush(stdout)是重新整理螢幕輸出