ย้ายจาก DirectX 10 ไปยัง DirectX 11


10

ฉันได้ทำโปรเจ็กต์งานอดิเรกขนาดเล็กในจำนวนที่สมเหตุสมผลโดยใช้ DirectX 9 แต่ถึงเวลาที่จะย้ายไปที่ DirectX 11 แล้ว

ฉันมีหนังสือ Frank Luna'a ในการเขียนโปรแกรมสามมิติโดยใช้ DirectX 10 แต่ไม่มีอะไรใน DirectX 11 ฉันเชื่อว่าพวกเขาคล้ายกันมาก แต่สงสัยว่าถ้าใครสามารถระบุความแตกต่างหลักในระดับรหัสที่ฉันจะต้องระวัง ( หรือชี้ไปที่แหล่งข้อมูลที่มีอยู่)



ฉันได้ยินมาว่า DX10 นั้นแตกต่างกันมากและไม่เข้ากันได้กับ DX9 ในขณะที่ DX11 นั้นเข้ากันได้กับ DX9
jokoon

DX10 นั้นค่อนข้างแตกต่างจาก DX9 แต่ DX11 นั้นค่อนข้างคล้ายกับ DX10 ฉันแค่อยากรู้ว่าความแตกต่างนั้นเป็นอย่างไร แปลก แต่ DX11 จะทำงานร่วมกับฮาร์ดแวร์ DX9 แต่ DX10 จะไม่;)
JohnB

คำตอบ:


15

เอกสารประกอบ SDK มีส่วนที่เกี่ยวกับการโอนย้ายเป็น 11ที่ครอบคลุมมาจากทั้ง 9 และ 10 นอกจากนี้ยังมีหน้าคุณสมบัติ D3D11มีหน้า

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

เมื่อคุณตระหนักถึงการเปลี่ยนแปลงแล้วมันค่อนข้างง่ายที่จะปรับตัวเข้ากับ: ที่ซึ่งคุณจะมี 10 ชื่อ " someDevice->Draw()" คุณจะได้รับบริบททันทีสำหรับอุปกรณ์และการโทร "immediateContext->Draw() "

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

นอกเหนือจากนั้นมีพารามิเตอร์ใหม่จำนวนหนึ่งสำหรับบางฟังก์ชั่นและหยิบฟิลด์เพิ่มเติมจำนวนหนึ่งในโครงสร้างและอื่น ๆ ตัวอย่างเช่นวัตถุคำอธิบายบัฟเฟอร์ใน 11มีStructureByteStrideเขตข้อมูลพิเศษที่ไม่ได้อยู่ใน 10และการสร้างอุปกรณ์ที่เกี่ยวข้องกับการส่งผ่านข้อมูลระดับคุณสมบัติ นอกจากนี้ยังมีการเปลี่ยนแปลงที่ชัดเจนและดังกล่าวข้างต้นในชื่ออินเตอร์เฟส (10s แทนที่ด้วย 11s)


ขอบคุณสิ่งที่ฉันต้องการ ฉันมองหาคำแนะนำอย่างเป็นทางการสำหรับสิ่งที่เปลี่ยนไป แต่ก็ไม่สามารถหาได้ ขอบคุณสำหรับคำตอบนี้และคนอื่น ๆ ที่สละเวลาเพื่อช่วยตอบคำตอบที่ดีเช่นกัน :)
JohnB

มันตลกดีที่จะลืมสิ่งเหล่านั้นอย่างรวดเร็ว ฉันเกลียดการรวบรวมเอฟเฟกต์เป็นพิเศษและฉันใช้เวลาสองสามวันในการทำให้มันใช้งานได้ แต่ฉันไม่ได้รวมลงในคำตอบของฉัน ...
Notabene

ฉันจะโพสต์คำถามนี้ แต่ตระหนักว่าคำตอบของคุณครอบคลุมข้อกังวลส่วนใหญ่ของฉันอยู่แล้วแม้ว่าฉันจะต้องการการยืนยัน สำหรับคนที่ทำงานกับ DX9 เท่านั้น แต่ต้องการอัพเกรดความรู้ของเขาการหยิบหนังสือ DX11จะไม่เพียง แต่สอนฉันเกี่ยวกับ DX11 (ชัด) แต่ยังให้ความรู้เพียงพอที่จะทำงานกับ DX10 ถ้าจำเป็น?
David Gouveia

ใช่สวยมาก

1

ฉันคิดว่าความแตกต่างที่สำคัญคือใน DX11 DXFont หายไปนอกเหนือจากนั้นมันค่อนข้างสวยมากตามที่ notabene กล่าว คุณควรจะดีกับหนังสือ DX10 เล่มนั้น ฉันใช้อันนั้นเมื่อย้ายไป DX11 และฉันไม่มีปัญหา คุณจะต้องไปดู msdn เป็นครั้งคราวแม้ว่าจะมีความแตกต่างเล็กน้อยใน API ในบางแห่งที่ IIRC


1

ไม่จำเป็นต้องเปลี่ยน Directx11 เพิ่มคุณสมบัติใหม่เท่านั้น คุณเพิ่งจะเปลี่ยนตัวเลขจาก ID3D10 เป็น ID3D11 เป็นต้น


DirectX11 เพิ่ม (ถ้าไม่ได้พูดถึงการทดลองย่อย hyped HW) Direct Compute: API สำหรับ GPGPU โดยมีการเชื่อมต่อที่ยอดเยี่ยมกับกราฟิกไลน์ไลน์ (ฉันไม่สามารถพูดถึง CUDA หรือ openCL) และความเป็นไปได้ของพื้นผิวและบัฟเฟอร์ RW หลายรายการบนตัวปรับพิกเซลซึ่งเปิดโอกาสใหม่มากมาย

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