C OpenGL SharpGL 繪製可旋轉長方體

2021-07-23 21:05:17 字數 2072 閱讀 9823

全域性字段:

// 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();       //

建立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); //

繞x軸旋轉

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的值可以實現影象的旋轉。

手繪與碼繪的對比(靜態碼繪)

手繪 碼繪 size 900,900 畫布大小 background 255 背景顏色 nostroke 不描邊 fill 82,68,60,90 ellipse 300,352,180,50 外星人的影子 fill 7,83,158 ellipse 343,349,70,30 右腳 fill 7,...

選單有重繪

type tadvanceddrawitemeven procedure sender tobject acanvas tcanvas arect trect state townerdrawstate of object 說明 sender標識乙個選單項的例項 acanvas 提供乙個選單項的例項...

uc gui重繪機制

乙個控制項根據它的特性繪製自己。這一工作通過呼叫wm的 api函式 wm exec 來完成。如果在程式中沒有呼叫 wm exec 就必須呼叫 wm paint 函式來繪製控制項。在多工環境的 uc gui 乙個後台任務通常用於呼叫 wm exec 並更新控制項 及其它所有帶有 函式的視窗 這樣就不必...