OpenGL旋轉立方體的實現

2021-07-09 06:01:22 字數 2395 閱讀 2203

計算機圖形學大作業

使用opengl實現旋轉的正方體。

主要分為搭建環境和完成**編寫兩部分。

安裝完成後,我們可以建立opengl的demo過程如下:

檔案 -> 新建 -> 專案 -> ********** -> opengl

直接編譯執行demo,將會展示乙個旋轉的三角形如下圖所示:

另外如需使用其他opengl庫,需要自行配置:

將相關.dll檔案拷貝到c:\windows\system32目錄下

將相關.lib檔案拷貝到d:\program files\dev-cpp\mingw64\x86_64-w64-mingw32\lib32 目錄下

將相關.h檔案拷貝到d:\program files\dev-cpp\mingw64\include\gl目錄下

最後在編譯選項中新增相應的鏈結,在linux下及在makefile中設定相應的編譯選項。

編寫void cube()函式,函式體中配合使用glbegin()glend(),繪製正方體,一共有6個面,每個面需要使用glcolor3f()glvertex3f()來進行點的描述及顏色的填充。

void cube()

在opengl中通過glrotatef()函式實現轉動特定角度,但是要實現旋轉,就要不停改變其轉動角引數,這裡我們通過設定三個靜態變數及讓其自增的方式來控制立方體的繞三個軸的旋,通過改變增量以控制轉動速度。

static

float xrot = 0.0;

static

float yrot = 0.0;

static

float zrot = 0.0;

glrotatef(xrot, 1, 0, 0);

glrotatef(yrot, 0, 1, 0);

glrotatef(zrot, 0, 0, 1);

cube();

xrot = xrot + 0.01;

yrot = yrot + 0.01;

zrot = zrot + 0.01;

在opengl中通過gltranslatef()函式指定立方體在三維座標系中的位置。這裡我們以z軸為例,讓立方體來回運動,其中h用於控制運動速度:

static

float z=-5;

static

float h=-0.001;

gltranslatef(0, 0, z);

z=z+h;

if(z

h=-h;

if(z>-5)

h=-h;

至此完成立方體簡單的旋轉與沿軸運動。

計算機中丟失opengl.dll

編譯通過以後,一直無法執行,困擾了很久,最終找到答案:

主要是編譯選項中同時引用了glut.lib和glut32.lib,而且在編譯選項中-lglut-lglut32前面,這個時候鏈結器首先尋找opengl.dll而沒有尋找opengl32.dll,此時我們進入dev c++的專案配置裡面對其進行修改:

專案->專案屬性->引數->鏈結

-lopengl32

-lglut32 //放在前面

-lglut

-lglu

-lglu32

最終編譯正確,並按照預期結果執行:

歷時乙個星期終於完成計算機圖形學這樣乙個簡單的大作業——實現立方體的旋轉。

在**層面上來說,確實很簡單,因為涉及的內容不多,並且opengl提供了很好的函式封裝,網上也有很多的類似的示例。

最麻煩的部分還是環境的搭建,由於opengl是乙個開源專案,並沒有非常權威的手冊指南,所以網上的案例也是良莠不齊,學習起來效率很低。

比如說,最開始找到乙個專案,用到glaux的東西,折騰了半天終於可以編譯卻發現無法執行,後來網上又有人說glaux基本棄用,並且win7好像並不支援,不得不從頭開始。

實現立方體旋轉

html部分 12 3456 css 1.3維空間圖 電腦螢幕中心為原點,橫向為x軸,縱向為y軸,人臉的方向為z軸 translate x,y translatex x translatey y translatez z translate3d x,y,z 定義位置的移動距離 rotate angl...

OpenGL4 繪製旋轉的立方體

這個例子將繪製乙個旋轉的立方體 主要介紹opengl矩陣的操作 主要用到的函式glrotatef 角度,x軸,y軸,z軸 改函式將該面model view 矩陣。gltranslatef x,y,z 平移矩陣操作 頂點結構宣告 struct vertex vertex g cubevertices ...

旋轉立方體動畫demo

園子裡看到很不錯的3d展示,需要在 chrome 或 edge 下正常工作 效果圖 源 html head head body div class newsitem div id blog news div style display none id document write ajax div ...