ฉันควรเรียนรู้ Direct3D 9, 10 หรือ 11 หรือไม่ [ปิด]


14

ฉันเพิ่งเริ่มเข้าสู่การเขียนโปรแกรม 3D ด้วย Direct3D ฉันควรรับ D3D รุ่นใด

11 ดูเรียบร้อยสวย แต่ 9 และ 10 ยังคงดูเหมือนว่าสวยอยู่ เมื่อพิจารณาถึงสถานะปัจจุบันของอุตสาหกรรมการพัฒนาเกมแล้วเวอร์ชันใดที่เหมาะสมกว่าที่จะเริ่มใช้งาน


คำถาม "เทคโนโลยีใดที่ใช้" ไม่ใช่คำถาม Q / A ที่ดี
MichaelHouse

คำตอบ:


12

ขึ้นอยู่กับว่าคุณต้องการออกแบบเอ็นจิ้นเพื่อสร้างเกมที่จะทำในสามปีหรือหนึ่งปีหรือหกเดือนและคุณกำลังคิดถึงพอร์ตคอนโซลหรือไม่ มันจะค่อนข้างง่ายที่จะโยนพอร์ต 360 ของเกมของคุณจาก Direct3D9 แต่คุณจะต้องทำสิ่งต่างๆให้มากขึ้นจาก D3D11 จำไว้ว่า D3D11 ล็อคผู้ใช้ XP ทุกคนหากไม่จำเป็นต้องใช้ฮาร์ดแวร์ D3D9 ทั้งหมด

การสำรวจบน Steam ครั้งล่าสุดแสดงให้เห็นว่าคนประมาณ 16% ยังคงใช้ Windows XP อยู่ คุณสามารถที่จะตัดมันออกได้ไหม? เมื่อถึงเวลาที่เกมของคุณเสร็จสิ้นสิ่งนี้จะเปลี่ยนแปลงไปอย่างไร คุณกำลังจะใช้คุณสมบัติที่ขึ้นอยู่กับ API ระดับสูงกว่าหรือไม่? เหล่านี้เป็นคำถามที่คุณจะต้องตอบตัวเอง

Direct3D 9 นั้นสามารถเข้าถึงได้และคุณสามารถเข้าถึงผู้คนจำนวนมากได้ด้วยเกม D3D9 แต่มันก็มีจำนวนวันโดยเฉพาะบนพีซี หากคุณไม่สนใจกำหนดเป้าหมายผู้คนเหล่านั้นแสดงว่ามีน้อยมาก

โอ้และไม่ต้องกังวลกับ DX10 ไม่มีเหตุผลเลยที่จะใช้งานกับ DX11 ยกเว้นว่าคุณต้องการใช้ D2D / DirectWrite ซึ่งไม่สมเหตุสมผล

แน่นอนว่ามันคุ้มค่าที่จะพูดถึงว่าใน DX11 นั้นไม่มีอะไรทดแทนสำหรับชั้นเรียนที่ในฐานะที่เป็นงานอดิเรกของตัวเองฉันพบว่ามีประโยชน์อย่างมากใน DX9 เช่น ID3DXMesh, ID3DXSprite, ID3DXFont ต้องคอมไพล์ ID3DXEffect จากแหล่งที่มาเป็นต้น Microsoft แนะนำให้ DirectWrite แทนที่ ID3DXFont แต่แน่นอนพวกเขาลืมที่จะทำให้ DX11 เข้ากันได้กับ Direct2D / DirectWrite ใหม่ .


ทำไมพวกเขาจึงเอากรอบเอฟเฟกต์ออก? มันเป็นคลาส IMO ที่มีประโยชน์มาก
dotminic

@__dominic: มันไม่ได้ถูกลบออก แต่คุณต้องรวบรวมมันด้วยตัวเอง
DeadMG

1
@__dominic: เนื่องจาก DeadMG ชี้ให้เห็นว่าเฟรมเวิร์กเอฟเฟกต์ไม่ได้ถูกลบออกมันถูกรวมเข้าไปในชุดรหัสไฟล์แบบสแตนด์อโลนที่คุณสามารถคอมไพล์ตัวเองได้ - นี่ถูกกล่าวหาว่าทำเพื่อให้มันเป็นเวอร์ชั่นของเหลวมากกว่า ลดปัญหาการปรับใช้ (โดยเฉพาะรอบ ๆ D3DX)

1
ฉันคิดว่าแย่กว่าการตัดออก 25% ของผู้ใช้ XP นั่นคือมีเพียง 17% ที่มี DX11 GPU (ณ ตอนนี้)
DMan

2
@DMan: D3D11 สามารถเรียกใช้บนฮาร์ดแวร์ระดับล่างรวมถึงฮาร์ดแวร์ D3D9
DeadMG

9

tldr: เรียนรู้ D3D11

ความแตกต่างระหว่าง 10 และ 11 นั้นค่อนข้างเล็กในแง่ของรูปร่างของ API D3D11 ช่วยให้คุณใช้การเขียนระดับลงเพื่อเขียนรหัสกับ D3D11 API ที่จะวิ่งกลับไปยังฮาร์ดแวร์ระดับ D3D9 (โปรดทราบว่าคุณยังต้องใช้ Vista หรือดีกว่า) ดังนั้นคุณอาจเรียนรู้เกี่ยวกับ API ที่ใหม่กว่าซึ่งฉันรู้สึกว่าสะอาดกว่าและเหมือนกันมากขึ้น

อย่างไรก็ตามหากคุณไม่มี Vista หรือดีกว่าหรือในที่สุดคุณก็ต้องการให้โค้ดของคุณทำงานบน XP (ตัวอย่างเช่นแจกจ่ายเกมของคุณให้กับผู้ใช้ XP) คุณจะต้องใช้ D3D9 ตลาด XP อาจจะหดตัวลงดังนั้นฉันจะบอกว่าไป 11 ข้อถ้าคุณทำได้


3

ถ้าคุณยังใหม่กับการเขียนโปรแกรมสามมิติและโดยเฉพาะอย่างยิ่งถ้าคุณยังใหม่กับการเขียนโปรแกรม COM และ Windows ฉันจะขอคำแนะนำอย่างยิ่งต่อการเรียนรู้ DirectX ทันที จากประสบการณ์ของฉัน DirectX เป็นเครื่องมือที่ทรงพลังอย่างยิ่ง แต่มันมีช่วงการเรียนรู้ที่สูงชันซึ่งคุณต้องพิจารณานอกเหนือจากกราฟการเรียนรู้ของการเขียนโปรแกรม Windows การเขียนโปรแกรมสามมิติและอื่น ๆ อีกมากมาย หากคุณเริ่มต้นด้วย DirectX คุณอาจรู้สึกว่ารายละเอียดทั้งหมดของการสร้างรหัสสำเร็จรูปนั้นฉันขอแนะนำ

แต่ฉันขอแนะนำ API ที่ง่ายกว่าซึ่งให้คุณมุ่งเน้นที่การเรียนรู้เกี่ยวกับการเขียนโปรแกรม 3D XNA ค่อนข้างดีและเนื่องจากมันอยู่ด้านบนของ DirectX เมื่อคุณย้ายไปที่ DirectX คุณจะมีความคิดบางอย่างที่จะทำให้เส้นโค้งการเรียนรู้ DirectX ง่ายขึ้นมาก

ตอนนี้ถ้าคุณมีประสบการณ์ในการเขียนโปรแกรม 3D เช่นกับ OpenGL และคุณรู้วิธีการทำโปรแกรม COM ฉันแนะนำ DirectX 11 อะไรก็ได้ แต่รุ่นล่าสุดล้าสมัยและประสบการณ์ที่คุณได้รับจากมันจะเป็นประโยชน์สำหรับ ช่วงเวลาที่สั้นลง

แต่อีกครั้งประสบการณ์จริงมาจากความหลากหลายดังนั้นฉันขอแนะนำให้คุณเรียนรู้ทั้ง DirectX และ OpenGL และ XNA หากคุณต้องการและ API มากเท่าที่คุณสามารถ ด้วยวิธีนี้คุณจะมีความรู้เชิงนามธรรมเกี่ยวกับการทำงานของการเขียนโปรแกรมสามมิติด้วยเครื่องมือที่แตกต่างกันและคุณจะสามารถใช้เครื่องมือที่เหมาะสมสำหรับแต่ละงาน


2

ฉันแนะนำ DX11 หรือ DX10 ความแตกต่างนั้นเล็กมาก คุณสามารถทำสิ่งต่าง ๆ ได้มากขึ้นด้วย DX11 (hw tessalation, gpgpu ที่ดีกว่า, ส่งออกไปยังพื้นผิวหลาย ๆ แบบบน Pixel Shader .. ) DirectX 9 มีสถาปัตยกรรมอื่นและล้าสมัยเล็กน้อยในขณะนี้ หากคุณกำลังถามเกี่ยวกับอุตสาหกรรมเกม dev ปัจจุบัน: สำหรับเกมพีซีที่พัฒนาแล้วอย่างชัดเจนนั้น DX9 นั้นตายแล้ว

แต่ฉันต้องพูดว่า:
ไม่ต้องกังวลเกี่ยวกับ apiเมื่อคุณเข้าใจวิธีการทำงานของกราฟิกอย่างแท้จริงการเรียนรู้ api ใหม่จะใช้เวลาสูงสุดหนึ่งเดือน แม้แต่เวลาที่สั้นลง


3
DX9 ไม่ล้าสมัย ยังมีผู้ใช้จำนวนมากบน XP มันอาจจะไม่อยู่ในการพัฒนาอีกต่อไปและกำลังจะล้าสมัยในอีกไม่กี่ปีข้างหน้า แต่สำหรับตอนนี้ก็ยังไม่เป็นเช่นนั้น
The Communist Duck

1
@thecommunistduck ฉันเห็นด้วย แต่ DX9 นั้นล้าสมัยไปแล้วสำหรับการเรียนรู้ เพราะเมื่อผู้เริ่มต้นที่เริ่มเรียนรู้ตอนนี้จะรู้ว่ามันดี ... มันจะล้าสมัย และแน่นอนฉันบอกว่ามันไม่ดีในคำตอบของฉัน
Notabene

-5

ฉันได้ยินมาว่า dx9 พร้อมกับระบบ win xp เป็นระบบพื้นฐานแบบแกนเดียว มันเป็นเทคโนโลยีเก่า ฉันแนะนำให้คุณ dx11


3
คำตอบนี้ไม่ได้เพิ่มประสิทธิภาพใด ๆ และก็ไม่ชัดเจน (และอาจผิดและทำให้เข้าใจผิด) สิ่งที่คุณแนะนำเกี่ยวกับ "ระบบหลักเดียว"

1
นอกจากนี้ "ฉันได้ยินมาว่า ... " ไม่ใช่แหล่งหลักฐานที่เชื่อถือได้ (หรืออะไรก็ได้จริง ๆ )
Maximus Minimus
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.