用C寫的3D迷宮

2021-05-14 13:14:33 字數 2470 閱讀 3003

boss說,要看opengl,看了快乙個月,總算出了個像樣的東西,用c寫了個3d迷宮,

雖然只有350行

**,不過邊學邊寫,足足寫了一周時間,還是小有成就感的,活活活!

tips:上下左右鍵控制前進後退轉向,空格鍵切換俯檢視,滑鼠右鍵更換地圖(雖然只寫了兩

個……) 加了點**,免得太過單調。

效果圖:

int        angle = angle_start ;            //行走方向

int        dir_x ;                //行走方向向量

int        dir_y ;

int        map_size = 16 ;

char    **map ;

int        globalview = 0 ;    //是否檢視俯檢視

char    *map1[16] =

;char    *map2[25] =

;//        載入牆紙

int        readimage()

free(textureimage);

}return 1;

}//         判斷是否為牆

int    wall(int x , int y)

//        計算行走方向向量

void    calcdir()

//        繪製迷宮牆體

int drawcube(int x , int y)

//        繪製迷宮地板

int    drawfloor(int x , int y)

//        標明當前位置和方向

int    drawplayer()

//        繪製迷宮

void    drawmap()

//        初始化繪製環境

void    init()

//        繪製函式

void    display(void)

glmatrixmode(gl_modelview) ;

glloadidentity() ;

drawmap() ;

glmatrixmode(gl_projection) ;

glloadidentity() ;

glenable(gl_depth_test) ;

gluperspective(90,1.0,0.01,16.0) ;

if(globalview == 0)

glulookat(px,py,0.0f,px+dir_x,py+dir_y,0.0f,0.0f,0.0f,1.0f) ;

else    

glulookat(px,py,7.0f,px,py,0.0f,0.0f,1.0f,0.0) ;

glutswapbuffers();

}//        地圖選擇

void    menufunc(int data)

angle = angle_start ;

px = px_start ;

py = py_start ;

calcdir() ;

}//        控制移動

void    aheadandback(float pos)

//        鍵盤事件

void    keyboard(unsigned char key, int x, int y)

//        鍵盤事件

void    special(int key , int x , int y)

}//        空閒時呼叫

void    idle(void)

//        視窗調整

void    reshape(glsizei    w , glsizei    h)

//        主函式

int    main(int    argc , char** argv)

用qt畫3d圓柱

qwidget是在2d座標第中,要畫3d的就要將3d圖抽象到2d座標中來。當乙個3d圓柱放到平面座標中,如果柱面方向和眼睛水平,則是乙個矩形 如果柱面和眼睛方向水平則是乙個圓,如柱面方向和眼睛垂直並繞x軸旋轉一定角度,那麼就是兩個個橢圓,且底面橢圓不能完全看見。這裡為了是圓柱圓更像圓柱面,我畫的是最...

用scrollview製作3D效果的導航頁

第一步 新建乙個工程 3dscrollview 第二步 建立乙個類繼承與scrollview import 列舉出3d效果的型別 typedef ns enum nsuinteger,jjj3dscrollvieweffect inte ce jjj3dscorllview uiscrollview...

用NVPerfHUD來分析3D程式

nvperfhud 是乙個很好的3d 程式除錯工具,它是nvperfkit 的一部分,由nvidia 開發,在寫d3d 程式時 它不能檢視opengl 程式 加入簡單的語句就可以利用nvperfhud 來除錯察看顯示卡的工作情況了。最近在使用時,感覺越來越方便,所以在這裡說一下最近用的最多的兩個功能...