OpenGL4 繪製旋轉的立方體

2022-09-16 02:30:18 字數 2733 閱讀 4842

/*** 這個例子將繪製乙個旋轉的立方體

* 主要介紹opengl矩陣的操作

* 主要用到的函式glrotatef(角度,x軸,y軸,z軸);

* 改函式將該面model view 矩陣。

* gltranslatef(x,y,z);

* 平移矩陣操作

*//**

* 頂點結構宣告

*/struct vertex

;vertex g_cubevertices =,,

,,,,

,,,,

,,,,

,,,,

,,,,

,};static float fxrot = 0.0f;

static float fyrot = 0.0f;

static float fzrot = 0.0f;

/*** 獲取一幀繪製的時間

*/static dword dwbegin = timegettime();

float felpased = float(timegettime() - dwbegin) * 0.001f;

dwbegin = timegettime();

/*** 三個方向上,x軸,y軸,z軸,同時旋轉

*/float rotspeed = 90;

fxrot += rotspeed * felpased;

fyrot += rotspeed * felpased;

fzrot += rotspeed * felpased;

/*** 指明,要操作的矩陣是模型矩陣

*/glmatrixmode( gl_modelview );

/*** 將模型矩陣清空為單位矩陣,對角線為1的矩陣為單位矩陣,其意義是

* 單位矩陣與定點作用,或者與其他的矩陣做乘法,結果不變

float modelview[4][4] = ;*/

glloadidentity();

/*** 移動模型矩陣 model view,

* gltranslatef( x, y, z );

* 做了改操作以後,矩陣變為

float modelview[4][4] = ;*/

gltranslatef( 0.0f, 0.0f, -5.0f );

/*** 可以呼叫

* float mat[4][4];

* glgetfloatv(gl_projection_matrix,(float*)mat);

*/float mat[4][4];

glgetfloatv(gl_modelview_matrix,(float*)mat);

/*** 進行旋轉,將更改modelview 矩陣

*/glrotatef( fxrot, 1.0f, 0.0f, 0.0f );

glrotatef( fyrot, 0.0f, 1.0f, 0.0f );

glrotatef( fzrot, 0.0f, 0.0f, 1.0f );

/*** 矩陣將被應用到繪製的的定點上。

* 實際上進行的操作就是 g_cubevertices 陣列中每乙個點與矩陣進行相乘,得到新的定點。

* 這個操作是在顯示卡中完成。所以速度很快。

* 當然,在顯示卡上,不止是與modelview矩陣相乘,還要和,投影矩陣和觀察矩陣進行相乘,

* 就是 mvp * vertex ;

* m = model matrix

* v = view matrix

* p = project matrix

*/glinterle**edarrays( gl_c4ub_v3f, 0, g_cubevertices );

gldrawarrays( gl_quads, 0, 24 );

swapbuffers( _hdc );

} while (false);

}/**

* 生成投影矩陣

* 後面為了重用性,我們會寫乙個專門的matrix類,完成矩陣的一系列擦做

* 這個是很有必須要的,當你對opengl了解的不斷深入,你會發現,很多都是和數學有關的

*/void perspective(float fovy,float aspect,float znear,float zfar,float matrix[4][4])

;perspective(45.0f, (glfloat)_winwidth / (glfloat)_winheight, 0.1f, 100.0f,matrix);

glloadmatrixf((float*)matrix);

#endif

glclearcolor(0,0,0,1);

}virtual int events(unsigned msg, unsigned wparam, unsigned lparam)}}

break;

}return __super::events(msg,wparam,lparam);

}protected:

unsigned _primitivetype;

};int callback _twinmain(

hinstance hinstance,

hinstance hprevinstance,

lptstr lpcmdline,

int nshowcmd ){

OpenGL旋轉立方體的實現

計算機圖形學大作業 使用opengl實現旋轉的正方體。主要分為搭建環境和完成 編寫兩部分。安裝完成後,我們可以建立opengl的demo過程如下 檔案 新建 專案 opengl 直接編譯執行demo,將會展示乙個旋轉的三角形如下圖所示 另外如需使用其他opengl庫,需要自行配置 將相關.dll檔案...

OpenGL學習07 繪製立方體

opengl在繪製場景之前,需要先產生或者說定義乙個場景,這個產生目標場景檢視的過程類似於照相機拍照的過程。1.把照相機固定在三角架上,並讓它對準場景 檢視變換 2.對場景進行安排,使各個物體在 中的位置是我們所希望的 模型變換 3.選擇照相機鏡頭,並調整放大倍數 投影變換 4.確定最終 的大小。例...

OpenGL WebGL 繪製立方體

include 繪製立方體 將立方體的八個頂點儲存到乙個陣列裡面 static const float vertex list 3 將要使用的頂點的序號儲存到乙個陣列裡面 static const glint index list 2 繪製立方體 void drawcube void glend s...