2012-04-19 37 views
0

我正在保存我驅動的X/Y座標,然後使用將座標轉換爲米的函數,並將1280添加到每個點(因此它將很好地適合2560x2560圖像),然後在「點',導致某種賽車線。但是一旦我生成了多邊形並將其保存爲圖像,它就會以某種方式垂直翻轉。垂直翻轉圖像將使其與軌道位圖完美匹配。我被告知這是由於DirectX內部有Y軸翻轉。爲什麼DirectX使用翻轉的Y軸?爲什麼DirectX使用翻轉的Y軸?

回答

5

嗯,問題是,DirectX是否有翻轉的Y軸或圖像?

DirectX使用3D/4D座標系,其中X軸指向右側,Y軸指向上方,而不應用轉換。這是因爲屏幕(Y軸指向下)是必須處理圖像的最後一個實例。之前的每一步都使用帶有向上Y軸的座標系。由於Direct3D是爲三維世界設計的,因此像世界一樣對齊並且像數學中大多數座標系一樣的座標系對程序員和設計人員來說更爲方便。想象一下,你會創建一個3D模型。如果你設計Y軸是向下指向的話,它會不會有點奇怪?

如果您完全沒有任何可以允許透視等的轉換,則您具有相同的座標系。忽略Z軸,左上角是(-1 | 1),右下角是(1,-1)。這等於例如用於例如數學。最後,這個座標系用視口轉換,這將導致左上角爲(0 | 0),右下角爲(ResolutionX | ResolutionY)。

所以,這一切的一切,之所以向上Y軸點是Direct3D的主要目的是描述在獨立屏幕的物理屬性的一種方便的方式世界。

+0

謝謝你,那可以解釋得更好。 – 2012-04-20 04:17:24

+0

有沒有這樣的事情作爲默認約定。您將軸點指向您最喜歡的位置。你可以在D3DX中使用助手函數,比如「make orhtorgonal projection matrix,right handed」,它可以幫助你創建矩陣。矩陣「隱含」了你的座標系,然後你在頂點着色器中做的就取決於你。 – 2013-07-19 03:44:05

+0

對於傳統的DirectX9固定功能流水線,它確實假定所有視圖座標都是爲左手的行主座標設置的。通過可編程管線,您可以根據需要設置慣例,但必須與您的內容,代碼和着色器保持一致。從歷史上看,DirectX使用左手行主座標,這是DXUT使用的座標。 [DirectX Tool Kit](http://go.microsoft.com/fwlink/?LinkId=248929)中的XNA Game Studio和SimpleMath使用右手的行主座標。歷史上OpenGL使用右手,列專業。 – 2014-09-30 06:19:22