Chuyển từ DirectX 10 sang DirectX 11


10

Tôi đã thực hiện một số lượng hợp lý các dự án sở thích nhỏ bằng DirectX 9 nhưng giờ là lúc chuyển sang DirectX 11.

Tôi có cuốn sách của Frank Luna về lập trình 3D bằng DirectX 10 nhưng không có gì trên DirectX 11. Tôi tin rằng chúng khá giống nhau, nhưng tự hỏi liệu có ai có thể liệt kê những khác biệt chính ở cấp độ mã mà tôi cần phải biết ( hoặc trỏ đến một nguồn hiện có).



Tôi nghe nói rằng DX10 thực sự khác biệt và không tương thích ngược với DX9, trong khi DX11 tương thích ngược với DX9.
jokoon

DX10 khá khác so với DX9 nhưng DX11 khá giống với DX10, tôi chỉ muốn biết sự khác biệt là gì. Thật kỳ lạ, DX11 sẽ hoạt động với phần cứng DX9 nhưng DX10 sẽ không;)
JohnB

Câu trả lời:


15

Tài liệu SDK có một phần về việc chuyển sang 11 bao gồm cả 9 và 10. Ngoài ra còn có trang tính năng D3D11 .

Một trong những thay đổi lớn nhất về hình dạng API giữa 10 và 11 là 11 chuyển một loạt phương thức từ chính thiết bị sang giao diện mới gọi là bối cảnh thiết bị ( ID3D11DeviceContextcụ thể), để hỗ trợ các tính năng đa luồng mới.

Tuy nhiên, khi bạn nhận thức được sự thay đổi, thật dễ dàng để thích nghi với: nơi bạn sẽ có trong 10 được gọi là " someDevice->Draw()" thay vào đó bạn sẽ nhận được bối cảnh ngay lập tức cho thiết bị và gọi " immediateContext->Draw()."

Một thay đổi lớn khác là API hiệu ứng được rút ra khỏi lõi và thực hiện phân phối nguồn độc lập mà bạn phải tự biên dịch và liên kết. Bạn cũng có thể nhận thấy một số giao diện và chức năng D3DX không được dùng nữa hoặc bị xóa.

Ngoài ra, có một số tham số mới cho một số chức năng và một số trường bổ sung trong các cấu trúc, et cetera. Ví dụ: đối tượng mô tả bộ đệm trong 11 có thêm một StructureByteStridetrường không có trong 10 và việc tạo thiết bị bao gồm việc truyền thông tin mức tính năng . Thêm vào đó là những thay đổi rõ ràng và đã nói ở trên về tên giao diện (10 giây được thay thế bằng 11 giây).


Cảm ơn, chỉ những gì tôi cần. Tôi đã tìm một số hướng dẫn chính thức cho những gì đã thay đổi nhưng bằng cách nào đó đã không thể tìm thấy nó. Cảm ơn bạn vì câu trả lời này và những người khác đã dành thời gian để giúp đỡ với câu trả lời tốt quá :)
JohnB

Thật buồn cười khi người ta quên đi những thứ đó một cách nhanh chóng. Tôi đặc biệt ghét việc biên dịch hiệu ứng và tôi đã mất vài ngày để làm cho nó hoạt động. Nhưng tôi đã không đưa nó vào câu trả lời của mình ...
Notabene

Tôi sẽ đăng câu hỏi này dưới dạng câu hỏi nhưng nhận ra rằng câu trả lời của bạn đã giải quyết hầu hết các mối quan tâm của tôi, mặc dù tôi muốn có một số xác nhận. Đối với một người chỉ làm việc với DX9 nhưng đang tìm cách nâng cấp kiến ​​thức của mình, chọn một cuốn sách DX11 sẽ không chỉ dạy tôi về DX11 (rõ ràng) mà còn cho tôi đủ kiến ​​thức để làm việc với DX10 nếu cần?
David Gouveia

Vâng khá nhiều.

1

Tôi nghĩ rằng sự khác biệt chính là, trong DX11, DXFont đã biến mất, ngoài ra nó còn khá nhiều như notabene đã nói. Bạn sẽ ổn với cuốn sách DX10 đó. Tôi đã sử dụng cái đó khi chuyển sang DX11 và tôi không gặp vấn đề gì. Thỉnh thoảng bạn sẽ cần phải xem xét msd, có một số khác biệt nhỏ trong API một số nơi IIRC.


1

Sẽ không cần phải thay đổi. Directx11 chỉ thêm các tính năng mới. Bạn sẽ chỉ thay đổi số từ ID3D10 sang ID3D11, v.v.


DirectX11 bổ sung (nếu không nói về quá trình điều chỉnh CT được thổi phồng) Tính toán trực tiếp: API cho GPGPU, với kết nối xuất sắc với đường ống đồ họa (tôi không thể nói điều này về CUDA hoặc openCL). Và khả năng nhiều kết cấu RW và bộ đệm trên trình đổ bóng pixel, mở ra rất nhiều khả năng mới.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.