2010-04-03 58 views
10

我想做一些項目讓我的簡歷更吸引遊戲公司。所以我會開始購買書籍。但我不知道寧願閱讀DirectX 9或10 api書籍。 DirectX10是偉大的,但它似乎行業正在緩慢移動到10.所以我應該使用9或去10?DirectX 9或DirectX 10的初學者?

+3

爲什麼不使用DirectX 11? – AndiDog 2010-04-03 15:44:26

+0

如果爲最大可能的受衆DX9開發。否則,DX11。 – derpface 2012-08-28 07:42:35

+0

@uberwulu現在不再。 [Win 7在2011年底破發了50%](http://www.w3schools.com/browsers/browsers_os.asp)/ [2012年初](http://unity3d.com/webplayer/hwstats/pages/web-2012Q4- os.html) – bobobobo 2013-01-07 17:27:23

回答

14

我會建議學習使用directx9的基礎知識,然後快速移動到dx11。 DirectX11比DirectX9更難開始使用,因爲它稍微複雜一些,但D3DX中的很多實用功能已不再存在,或者已經被移動到源代碼中,如效果框架。這並不是壞事,但它確實使它學習起來更加複雜,因爲你必須一次學習更多的東西。

花2到3周的學習DX9然後移動到DX11的「實際」的工作:P

使用負載模型等固定管道和D3DX它比DX11簡單了很多,學習基本的DX9更好地記錄下來,你會得到一個三角形,然後在屏幕上的模型快得多。玩這個,直到你完全理解了基本概念和變形。

但是,只能使用着色器重寫它。無論如何,你需要在DX10/11中使用它們,但是如果你已經有了一個工作框架的代碼,學習起來會容易很多,而且在DX9中工作起來要簡單得多。

一旦你有這個工作,學習DX11。你必須切換數學庫。你將不得不發明自己的模型格式和裝載機。您必須創造自己的效果框架或使用示例,但現在您已經瞭解了3D和編程着色器的基礎知識,這些都非常容易。

+0

DX9看起來「更簡單」的主要原因是您可以利用傳統的固定功能管道進行基本渲染,而無需馬上學習HLSL,但是您必須立即忘掉它以學習「現代」GPU節目。最好只使用DX11和[DirectX工具包](http://go.microsoft.com/fwlink/?LinkId=248929),它爲您提供了大量包含「庫存」着色器的入門代碼。 – 2014-09-30 06:15:42

3

TBH如果您知道如何在GL,D3D9,D3D10或D3D11中進行3D開發,您可以進一步瞭解OneOfOne的評論,然後您可以通過一點工作將這些技能轉讓給其他任何人。

就我個人而言,我會以D3D11爲目標,就像您正在學習尖端技術一樣。你會發現你可以做一些小工作來完成GL,D3D9或D3D10。在理論上做足夠的工作,你會發現它甚至不難將技能轉移到完全軟件引擎上。

+1

在簡歷上匹配正確的DirectX版本只對入門級代碼猴子很重要。 – 2010-04-03 16:21:15

+0

TBH我開始做PS2開發,因爲我寫的DX7/8引擎很好。我的運輸署給我留下了深刻的印象,在接下來的幾年裏,我有一位同事和我寫了一篇文章,可以說是最先進的PS2引擎之一。恥辱它是如此糟糕的利用:( – Goz 2010-04-03 16:28:45

+0

聽起來不錯。但D3D11絕對沒有任何出版商的資源。我的理解DX的道路將更加困難。 – numerical25 2010-04-03 16:35:46

2

如果你的意圖是真正學習你在遊戲行業使用的技能,那就堅持使用DirectX 9.由於DirectX 10和11都需要Vista或Window 7,所以遊戲開發人員仍然大多忽略它們並將DirectX 9爲了支持Windows XP。

這就是說,它開始與你無關。差異並不大。如果您瞭解3D API背後的概念以及GPU管道的工作原理,那麼您可以用最少的努力就可以選擇三種甚至是OpenGL中的任何一種。

+1

我傾向於不同意。如果你掌握了D3D11,那麼你可以輕鬆處理D3D9。從即將過時的API開始並不是一個好主意,它也有太多遺留(固定功能)的東西,應該忽略。這對初學者來說只是令人困惑。 – 2010-04-24 15:41:01

+1

dx9 API中唯一「過時」的部分是初學者永遠不會涉足的高級主題。我同意浪費時間學習紋理採樣器狀態和固定函數凹凸貼圖或立方體映射的複雜性是個壞主意,但90%的dx9直接映射到dx11。 API已經被清理了一下,但事情或多或少地以相同的方式工作。初學者學習3D,幾何變換,z緩衝,alpha混合等的主要步驟幾乎與API無關。只要堅持着色器爲導向渲染更高級的東西在DX9。 – Alan 2010-04-24 16:31:27

+4

自從版本7開始使用D3D以及D3D10和11之後,您可以更好地瞭解GPU上實際發生的情況。 學習曲線可能更陡峭,但在掌握概念後,您應該確切知道發生了什麼。另一方面,D3D9具有固定的功能和其他遺留的功能,這些功能在我看來只是分散注意力。 更好地從頭開始學習它的「正確方法」。 – 2010-04-24 18:18:23

1

事實是,你需要同時學習。

As long as 50% of gamers are still on WinXP,您將需要能夠在Direct3D9中編程。

D3D9 與D3D10/11比起來更容易上手。它的原理是相同的,要放置頂點,計算法線,並渲染網格。無論您是創建ID3D11BlendState結構還是致電IDirect3DDevice9::SetRenderState(),其概念都相同,只是採用不同的方式。

在使用d3d11幾天之後,我在很多方面認爲它比DX9更好。首先,您可以使用GPU的全部大寫字母,包括幾何着色器。第二,它迫使你完全理解圖形管道甚至可以繪製任何東西(注意函數是如何命名的,它們影響管道的階段:here:(IA* fcns:input-assembler stage,OM* fcns:output-merger stage等) )。這可能會導致INITIAL啓動曲線稍大,但一旦得到它,它不會比D3D9更難,因爲功能的命名有助於概念的堅持。

因此,讓事情都和串聯學習他們可能有助於減少的努力,你花學習從DX9做的事情(即你真的想使用着色器花費更多的時間已過時的API /量的方法,和唐DX9的固定功能管線部分太多了)。

+0

downvoter,解釋你的原因或您的下注將被刪除! – bobobobo 2011-10-15 17:56:05

+0

一般而言,您使用DX9的唯一原因是針對Windows XP,在這種情況下,您還需要使用舊版開發人員工具,舊版SDK,舊版支持庫和中間件,並針對極早期/低級別的機器他們主要存在於中國,韓國和俄羅斯。如果您正在做其他任何事情,請爲自己節省很多痛苦,並專注於DirectX 11.如果您正瞄準[Steam's](http://store.steampowered.com/hwsurvey/)的受衆羣體,那麼Windows XP無疑是一個明智之舉小於%5。 – 2014-09-30 06:13:49

0

你可以查看Luna的DX9/DX11書籍(我建議你從11開始)。你可以看看http://www.rastertek.com/tutdx11.html,但他沒有說明一切,所以你可以在Luna的書中看看這些功能或屬性是什麼

0

除了一些例外,DX10只是一個傳統的免費DX9。例如DX9內置了渲染Flatshaded,紋理或使用着色器的選項。在DX10中,這些選項不見了,你必須使用真正的着色器。如果你想做平面着色,寫一個平坦着色的HLSL着色器。

所以我建議你學習DX10(或DX11)。通過不使用傳統功能,您將能夠快速採用DX9,但採用更現代的編碼風格。他們可能會很困惑,所以DX10會將您關注於相關的事情。如果你是一個真正的初學者,並且設置一個頂點緩衝區來創建單個三角形會讓你感到困惑(因爲真正的3D程序員在單個三角形中沒有更多的意圖),我甚至會建議從OpenGL開始。您將獲得更快的成功,但實際上,如果您想專注於現代3D編碼,這可能會讓DX9-Legacy分散注意力。

0

是的,不要在DX10上浪費時間,它從來沒有被任何時候作爲行業標準採用,沒有任何足夠大的變化來保證從DX9升級到DX11,但是對於DX11而言。

0

我建議directx 11,我認爲沒有理由浪費時間在不推薦使用的函數或技術上。 從頭開始學習着色器會讓事情更加清晰

-1

嘗試從9和10的樣本文件夾中做樣本,如果您的計算機可以支持它,11.這就是我正在做的。