2012-02-04 45 views
0

我想知道像馬里奧卡丁車這樣的遊戲開發者如何去切換他們的關卡方向。有沒有一種簡單的方法可以在OpenGL中做到這一點。對於那些不瞭解的人,如果你要在「鏡子」模式下打一個等級,那麼通常在左邊的門就在右邊。馬里奧卡丁車「鏡像模式」 - OpenGL

這裏是一個小例子

與這四個verticies多邊形

X  Y 


Z  W 

將是

Y  X 


W  Z 

回答

3

與這四個verticies多邊形

你不需要那個。

  1. 設置鏡像變換矩陣。鏡像矩陣是按負值縮放的矩陣。例如glScalef(-1.0f, 1.0f, 1.0f)是x軸鏡像。
  2. 致電glFrontFaceGL_CW。即將正面改爲「反面」值。
  3. 渲染場景。

同樣的原則也有3.0着色器一起使用,即使你將不得不使用別的東西來構建

-1 0 0 0 
0 1 0 0 
0 0 1 0 
0 0 0 1 

規模矩陣

雖然,是的,在視頻遊戲的情況下,可能更容易(碰撞檢測)只是在關卡編輯器中翻轉整個地圖,並將其保存爲新關卡而不是實時翻轉它。

+2

@Gigi:無關緊要。無論您使用什麼製作矩陣,該方法與着色器都相同。 – SigTerm 2012-02-04 02:25:09

+0

是的,使用-1進行縮放是如何做到的正確方法! – 2012-02-04 03:52:13

+0

@Gigi:無論您使用何種版本的OpenGL,都可以使用矩陣來轉換頂點。 GL對你的矩陣代表什麼 - 規模,旋轉,平移,投影,身份,鏡像,陰影 - 與他們的價值唯一的區別是不相關的,GL所執行的操作不會改變。 OpenGL 3及更高版本仍然在着色器中使用矩陣。唯一的區別是你用glUniformMatrix *而不是glLoadMatrix/glRotate/glTranslate/glScalef加載它們。 – SigTerm 2012-02-04 19:13:10