/ / Sự khác biệt là gì và bạn nên sử dụng cái nào?

Sự khác biệt là gì và bạn nên sử dụng cái nào?

DirectX 12 được phát hành cùng với Windows 10 vào năm 2015. Với việc phát hành, DirectX 12 của Microsoft đã mở ra một kỷ nguyên mới cho các game thủ và nhà phát triển trò chơi. Có khả năng giảm chi phí hoạt động của CPU trong khi tăng hiệu suất GPU, DirectX 12 đã nhanh chóng tạo nên tên tuổi cho chính nó.


Tuy nhiên, việc tăng hiệu suất của bạn có thực sự đơn giản như chuyển từ DirectX 11 sang DirectX 12 không? Hãy tìm hiểu bằng cách xem xét sự khác biệt giữa DirectX 11 và 12.


DirectX của Microsoft là gì?

Logo DirectX được áp đặt trên ảnh của một người đàn ông đang viết mã

Như đã giải thích trong phần tổng quan về Microsoft DirectX của chúng tôi, DirectX là một tập hợp các API được sử dụng để xử lý các tác vụ liên quan đến đa phương tiện. Điều này bao gồm lập trình trò chơi trên các nền tảng dựa trên Microsoft như Windows và Xbox. Để cung cấp một số ngữ cảnh, hãy nói ngắn gọn về API.

Giao diện lập trình ứng dụng (API) giúp hai hoặc nhiều chương trình máy tính có thể giao tiếp với nhau, mà chúng ta sẽ thảo luận trong phần tổng quan về API. Hãy nghĩ về nó giống như một chiếc điện thoại. Nếu mẹ bạn gửi cho bạn một tin nhắn có danh sách thực phẩm, điện thoại của bạn sẽ nhận dữ liệu đó và hiển thị cho bạn. Về cơ bản đó là một API.

Sự khác biệt giữa DirectX 11 và DirectX 12 là gì?

Vậy, sự khác biệt giữa DirectX 11 và DirectX 12 là gì? Nói một cách đơn giản, DirectX 12 là phiên bản DirectX mới nhất. Một trong những điểm khác biệt đáng chú ý nhất giữa hai loại này là cách chúng tương tác với phần cứng của bạn. Hầu hết các trò chơi được phát triển bằng DirectX 11 chỉ sử dụng từ hai đến bốn lõi CPU. Một trong những lõi này thường được dành riêng để báo cho GPU biết phải làm gì.

Sau đó, trò chơi sẽ sử dụng các lõi còn lại để xử lý các cài đặt sử dụng nhiều CPU khác nhau như hạt của trò chơi hoặc vẽ khoảng cách. Mặt khác, DirectX 12 trải rộng khối lượng công việc của CPU trên nhiều lõi và cũng cho phép mọi lõi giao tiếp với GPU cùng một lúc.

DirectX 12 cũng đi kèm với một số chuông và còi lạ mắt. Điều này bao gồm tính toán không đồng bộ và các đối tượng trạng thái đường ống (PSO). Điện toán không đồng bộ tăng mức sử dụng GPU bằng cách cho phép nhiều khối lượng công việc hoạt động song song. Điều này về cơ bản sẽ giải phóng toàn bộ tiềm năng của GPU của bạn.

Ngoài kết xuất đồ họa, GPU của bạn chịu trách nhiệm xử lý nhiều tác vụ khác, chẳng hạn như chạy các thuật toán máy học. Với DirectX 11, GPU chỉ có thể thực hiện một trong các tác vụ này tại một thời điểm và theo một thứ tự nhất định. Khi điều này xảy ra, hiệu suất sẽ bị ảnh hưởng vì tất cả tài nguyên GPU của bạn không được sử dụng.

Hãy nghĩ về nó giống như một người phục vụ tại một nhà hàng. Khi một người phục vụ lần đầu tiên nhận đơn đặt hàng của bạn, họ sẽ hỏi bạn muốn uống gì trước. Khi bạn nhận được đồ uống của mình, họ sẽ hỏi bạn muốn món gì cho món chính. Đơn hàng của bạn được thực hiện theo từng bước. Người phục vụ sẽ không hỏi bạn muốn món tráng miệng nào trước khi bạn dùng xong món chính. Mặc dù điều này có hiệu quả, nhưng nó không hiệu quả như nó có thể.

Trong điện toán, mỗi nhiệm vụ của người phục vụ sẽ được xử lý bởi một tài nguyên GPU khác. Cho đến khi bạn nhận được đồ uống của mình, tài nguyên GPU cần thiết để thực hiện đơn hàng món chính của bạn sẽ không hoạt động. Với điện toán không đồng bộ của DirectX 12, người phục vụ sẽ có thể nhận đơn đặt hàng của bạn cùng một lúc giống như trong một chuỗi thức ăn nhanh. Điều này tối đa hóa việc sử dụng GPU và cải thiện hiệu suất chơi trò chơi của bạn.

DirectX 12 cũng giới thiệu PSO. Với DirectX 11, khi hình học của trò chơi được gửi tới GPU để hiển thị, nhiều cài đặt phần cứng chịu trách nhiệm diễn giải và hiển thị dữ liệu này. Điều này được gọi là đường dẫn đồ họa và là luồng dữ liệu đầu vào và đầu ra xảy ra khi GPU của bạn kết xuất khung hình. Tuy nhiên, đồ họa của DirectX 11 không hoàn hảo.

Đường ống này chứa một tập hợp các trạng thái khác nhau, bao gồm trạng thái rasterize, trạng thái pha trộn và trạng thái stencil độ sâu, trong số các thành phần khác. Trong DirectX 11, có sự phụ thuộc giữa các trạng thái khác nhau này. Kết quả là, một trạng thái không thể hoàn thành cho đến khi trạng thái trước đó được xác định. Điều này làm giảm mức sử dụng GPU và tăng chi phí hoạt động của CPU với chi phí hiệu năng.

Để giải quyết vấn đề này, DirectX 12 đã giới thiệu PSO, là các đối tượng mô tả trạng thái của toàn bộ đường ống đồ họa. PSO giống như một cái chai chứa các trạng thái và thành phần khác nhau cần thiết để tạo ra một hình ảnh. Điều này cho phép GPU xử lý trước mọi trạng thái phụ thuộc thay vì phải liên tục tính toán lại các trạng thái dựa trên quy trình đồ họa hiện tại.

Điều này làm giảm đáng kể chi phí hoạt động của CPU được tìm thấy trong DirectX 11 và cải thiện hiệu suất. Vì vậy, sự khác biệt này thực sự trông như thế nào? Theo Microsoft, DirectX 12 giảm chi phí hoạt động của CPU tới 50% và cải thiện hiệu suất GPU tới 20%. Mặc dù đó là một số cải tiến đáng kể, nhưng điều này không có nghĩa là bạn sẽ thấy kết quả tương tự.

Tại sao chuyển từ DirextX 11 sang DirectX 12 không đơn giản

DirectX 11 được phát hành lần đầu cho Windows Vista vào ngày 27 tháng 10 năm 2009. Vì vậy, với DirectX 12 tiếp theo vào năm 2015, đó là khoảng cách 6 năm giữa DirectX 11 và DirectX 12. Trong thời gian này, hàng nghìn trò chơi đã được phát triển bằng DirectX 11. Thật không may, việc di chuyển từ DirectX 11 sang DirectX 12 không hề dễ dàng.

DirectX 11 được gọi là API cấp cao. Nói một cách đơn giản, các API cấp cao giúp các nhà phát triển làm việc dễ dàng hơn. Kết quả là các trò chơi ổn định, bóng bẩy và có thể chơi được. Mặt khác, DirectX 12 là một API cấp thấp và là một con thú khác so với DirectX 11. Mặc dù nó cho phép các nhà phát triển tinh chỉnh tối ưu hóa ở cấp độ chi tiết, nhưng nó cũng đòi hỏi kiến ​​thức sâu rộng để sử dụng.

Điều đó đang được nói, một trò chơi được phát triển trong DirectX 12 có thể có hiệu suất kém hơn tùy thuộc vào kiến ​​thức của nhà phát triển về API. Có những cải tiến đi kèm với DirectX 12, nhưng nó thực sự phụ thuộc vào việc nhà phát triển có thể triển khai nó tốt đến mức nào. Vì lý do này, rất nhiều nhà phát triển chọn sử dụng các API cấp cao như DirectX 11.

Nên Chọn DirectX 11 hay DirectX 12?

Câu trả lời phụ thuộc vào một số điều, chẳng hạn như trò chơi bạn đang cố chạy. Ví dụ: Guild Wars 2 chạy trên DirectX 11. Ngay cả khi hệ điều hành và phần cứng của bạn sử dụng DirectX 12, bạn sẽ không có tùy chọn để chọn DirectX 11 trong Guild Wars 2 vì trò chơi không hỗ trợ. Đây hoàn toàn là quyết định của nhà phát triển, ArenaNet.

Hình ảnh trong trò chơi từ Guild Wars 2
Tín dụng hình ảnh: Martin Kerstein / Guild Wars 2

Dù bạn có tin hay không thì tùy, ArenaNet đã mất chín năm để chuyển đổi từ DirectX 9 sang DirectX 11. Tuy nhiên, có một số trò chơi hỗ trợ cả DirectX 11 và DirectX 12. Chẳng hạn như Fortnite (đọc bảng cheat Fortnite của chúng tôi). Thông qua cài đặt của trò chơi, người dùng có thể chuyển đổi giữa cả hai phiên bản. Tóm lại, không phải trò chơi nào cũng hỗ trợ cả DirectX 11 và DirectX 12. Đối với những trò chơi hỗ trợ, hãy chuyển đổi giữa hai trò chơi và tự xác định trò chơi nào hoạt động tốt hơn trên PC của bạn.

Việc bạn có thể chọn giữa DirectX 11 và DirectX 12 hay không cũng sẽ phụ thuộc vào phần cứng của bạn. Gần như bất kỳ GPU hiện đại nào cũng sẽ hỗ trợ DirectX 12, nhưng điều tương tự không thể xảy ra với các GPU cũ hơn như Radeon HD 4870. Được phát hành vào năm 2008, GPU này chỉ hỗ trợ tối đa DirectX 10. Điều này có nghĩa là nó sẽ không thể chạy hầu hết trò chơi hiện đại chạy bằng DirectX 11 và DirectX 12.

DirectX 12 có phải là lựa chọn phù hợp với bạn không?

Nói chung, việc chuyển đổi từ DirectX 11 sang DirectX 12 không phải là trắng đen như người ta tưởng. Nó phụ thuộc vào nhiều yếu tố như phần cứng, phần mềm, hệ điều hành và liệu trò chơi có hỗ trợ cả hai hay không. Tất cả những điều này cần được xem xét trước khi đưa ra quyết định và điều này cũng có thể đúng với các thế hệ DirectX trong tương lai.

Similar Posts

Leave a Reply

Your email address will not be published. Required fields are marked *