OpenGL實現CS死後的攝像機漫遊方式

2021-06-08 04:29:39 字數 795 閱讀 1313

這裡著重介紹對wasd鍵的響應動作。

因為這個比較簡單,呵呵。

對檢視矩陣中的 m[3][0] 進行加加減減就可以完成對ad鍵對應的動作。

對檢視矩陣中的 m[3][2] 進行加加減減就可以完成對ws鍵對應的動作。

簡單的寫兩句**:

// get the modelview matrix

float mat[4][4];

glgetfloatv(gl_modelview_matrix, (float*)mat);

if(keydown('w'))

...glloadmatrixf((float*)mat);

原理:模型檢視矩陣:由模型矩陣和檢視矩陣的乘積得到的。

對於乙個3d座標的變換在數學上可以認為是先乘模型矩陣再乘檢視矩陣:(mmv = mm * mv)

然而對於檢視矩陣又可以理解為先進行一次仿射變換再進行一次平移變換,

mv11  mv11  mv11  0     1  0  0  0

mv =  mv21  mv11  mv11  0  *  0  1  0  0

mv31  mv11  mv11  0     0  0  1  0

0        0         0         1      x   y   z  1

在opengl中攝像機是被固定在世界座標的原點上的,朝向z的負半軸。

在邏輯上對攝像機的移動其實是對世界的移動來完成的。

通過以上分析得出,對世界移動的最後一步是一次平移,

是不是很簡單了。

OpenGL實現會動的圓

include 引入標頭檔案。include include int time 0 int count 0 const int n 20 glfloat r 0.1f const glfloat pi 3.1415926536f glfloat v 20 初始化頂點陣列 void initverte...

OpenGL在MFC中的實現

1 在寫 之前,首先要做好opengl的環境配置。比如路徑之類,還有新增標頭檔案,標頭檔案新增在stdafx.h中,有位置要求,不能在 include 這句之上 這兩句加在 stdafx.h 裡面的 include 以上就會出現問題,需要加在這一句下面 include include 2 修改函式b...

OpenGL光照陰影演算法的實現

陰影 影 又稱影子 背影 光線被不透明物體阻檔而產生的黑暗範圍,與光源的方向相反。影的橫切面是二維 輪廓 阻檔光線物體的倒轉投影。影的大小 形狀隨光線的入射角而改變。維基百科 在場景中新增陰影可以使得場景更加逼真。下面兩幅圖是有無陰影效果的對比 如何製造陰影?簡單地做法,我們可以通過把源物體壓平在物...