當前位置:編程學習大全網 - 編程軟體 - opengl為什麽使用右手坐標系

opengl為什麽使用右手坐標系

眾所周知,在固定管線的OpenGL中只能使用右手坐標系,OpenGL並沒有提供API讓妳在左右手坐標系中切換。而在可編程管線的OpenGL中,就沒有那麽

多限制了,所有的Vertex Transform都由妳來控制。事實上,妳直接把左手坐標系的頂點和矩陣傳給OpenGL Shader也是沒有問題的,在Vertex Shader

使用mul(v, matrix)變換頂點,得到的會是跟Direct3D同樣的結果。註意是跟Direct3D同樣的結果,而不是跟固定管線OpenGL相同的結果,事實上,正如

上面所說,左右手坐標系渲染的結果的左右顛倒的。唯壹要區別的是Viewport的Z,在OpenGL中,裁剪空間的Z坐標是[-1. 1],而在Direct3D中是[0, 1],

而經過Viewport變化後,不管是OpenGL還是Direct3D, Z都是[0, 1], OpenGL的視口變化是 Z=(Z/W + 1) / 2 ,而Direct3D是Z=(Z/W),這對Depth

Test不受影響,Depth Test只比較相對位置遠近,但Depth Buffer的值就不同了。所以需要對project matrix做壹些調整,才能讓他們寫到depth buffer中

的數值相同。具體來說,如果要讓OpenGL流水線接受D3D的project matrix,就需要乘上

相當於把project space的頂點z都作了z = z * 2 – 1的操作,所以經過viewport變換就壹致了。

  • 上一篇:數控編程到底難不難學啊?
  • 下一篇:C編程:輸入年月日,計算離今天還有幾天
  • copyright 2024編程學習大全網