2018年4月2日 星期一

PerspectiveMatrix的種類

PerspectiveMatrix的種類

前言

  在整合Direct3D與OpenGL前,我一直認為PerspectiveMatrix只有分左手與右手差別,但在實際整合後發現Direct3D與OpenGL的深度範圍是不一樣的,所以還要再區分一次,最後你會發現PerspectiveMatrix有4種,在此將它紀錄下來。

內容

  PerspectiveMatrix的種類在入門時,因為只要考慮一個繪圖函示庫(Direct3D或OpenGL),所以只要分成左手與右手兩種,但是當需要整合Direct3D與OpenGL時就要考慮到深度範圍不一樣的問題,Direct3D的深度範圍是 0 ~ +1,OpenGL的深度範圍是 -1 ~ +1,因此種類會分為以下:
1.左手,深度範圍是 0 ~ +1
2.右手,深度範圍是 0 ~ +1
3.左手,深度範圍是 -1 ~ +1
4.右手,深度範圍是 -1 ~ +1
在整合引擎時,當你下達產生一個PerspectiveMatrix時,會產生一種呢?首先整合引擎的座標本身就有預設好是左手與右手,但深度範圍就要分函示庫了,這裡整合引擎時要想出一套辦法知道目前使用的函示庫來決定要產生哪一種PerspectiveMatrix。
  接著來說怎麼產生這4種PerspectiveMatrix,Direct3D的部分可以查詢
D3DXMatrixPerspectiveFovLHD3DXMatrixPerspectiveFovRH,說明的下方有矩陣的產生,接著是OpenGL的部分就麻煩了點,必須要看code,首先要有glm(OpenGL Mathematics),它是OpenSource,下載後下列檔案看code怎麼產生:
(glm's root directory)\glm\glm\gtc\matrix_transform.inl

參考資料

OpenGL Mathematics
Projection Transform

沒有留言:

張貼留言