/*** 這個例子將繪製乙個旋轉的立方體
* 主要介紹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...