DirectX 11 so với DirectX 12: 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ớ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í sử dụng CPU trong khi tăng hiệu suất GPU, DirectX 12 nhanh chóng tạo được tên tuổi cho mình.
Quả thực, người ta có thể tự hỏi liệu việc nâng cao hiệu suất có thể đơn giản như việc di chuyển từ DirectX 11 sang phiên bản kế nhiệm của nó là DirectX 12 hay không. Để hiểu rõ hơn về quá trình chuyển đổi này, cần thận trọng khi kiểm tra sự khác biệt tồn tại giữa hai phiên bản DirectX này.
DirectX của Microsoft là gì?
Tóm lại, Microsoft DirectX cấu thành một bộ công cụ phát triển phần mềm tạo điều kiện thuận lợi cho việc thực hiện các hoạt động đa phương tiện khác nhau trong các ứng dụng, đặc biệt là các chương trình chơi game được triển khai trên các hệ thống Windows và Xbox. Bằng cách minh họa, có thể hữu ích nếu tạm thời đi sâu vào khái niệm Giao diện lập trình ứng dụng hoặc API, về cơ bản là một loạt các giao thức cho phép giao tiếp trơn tru giữa các thành phần khác nhau của hệ điều hành, từ đó hợp lý hóa các tương tác theo chương trình.
Giao diện lập trình ứng dụng (API) tạo điều kiện giao tiếp giữa nhiều ứng dụng phần mềm bằng cách trao đổi dữ liệu ở định dạng có cấu trúc. Về bản chất, API hoạt động như một trung gian hòa giải, cho phép các hệ thống khác nhau tương tác liền mạch. Khái niệm này sẽ được khám phá sâu hơn trong quá trình kiểm tra toàn diện các API của chúng tôi, trong đó chúng tôi đi sâu vào các chức năng và cách sử dụng khác nhau của chúng trong các ngành khác nhau. Nói một cách đơn giản, hãy tưởng tượng việc sử dụng điện thoại để gửi và nhận tin nhắn; tương tự, API cho phép truyền thông tin từ chương trình này sang chương trình khác, cho phép người dùng truy cập và xử lý dữ liệu một cách hiệu quả.
Sự khác biệt giữa DirectX 11 và DirectX 12 là gì?
DirectX 11 và DirectX 12 đại diện cho những bước lặp khác nhau trong quá trình phát triển API đồ họa của Microsoft để phát triển trò chơi. Sự khác biệt chính nằm ở sự tương tác của chúng với kiến trúc phần cứng của máy tính. Mặc dù thông thường các trò chơi được phát triển bằng DirectX 11 chỉ tận dụng hai đến bốn lõi CPU, trong đó một lõi đóng vai trò là điểm giao tiếp giữa CPU và GPU, DirectX 12 giới thiệu các khả năng đa luồng nâng cao cho phép phân bổ tài nguyên hiệu quả hơn giữa nhiều lõi. Điều này giúp cải thiện hiệu suất và hiển thị mượt mà hơn trong các ứng dụng tận dụng giao diện đồ họa được cập nhật này.
Để tối ưu hóa hiệu suất trong các ứng dụng chơi game, điều quan trọng là phần mềm phải phân bổ tài nguyên một cách hiệu quả. Điều này có nghĩa là tận dụng tối đa tiềm năng của tất cả các đơn vị xử lý có sẵn trong khi vẫn duy trì liên lạc hiệu quả giữa chúng. Về vấn đề này, một số hệ điều hành nhất định đã triển khai các cơ chế cho phép phân phối các tác vụ tính toán giữa các thành phần phần cứng khác nhau, chẳng hạn như bộ xử lý và card đồ họa. Bằng cách khai thác khả năng của nhiều lõi, các chiến lược này nâng cao hiệu suất hệ thống tổng thể và tạo điều kiện tương tác liền mạch giữa bộ xử lý trung tâm (CPU) và bộ xử lý đồ họa (GPU).
Thật vậy, một trong những tính năng đáng chú ý của DirectX 12 là sự kết hợp của các chức năng nâng cao như tính toán không đồng bộ và các đối tượng trạng thái đường dẫn (PSO), giúp nâng cao đáng kể hiệu quả của các đơn vị xử lý đồ họa (GPU) bằng cách cho phép thực thi đồng thời nhiều tác vụ. Do đó, công nghệ này cho phép khai thác tối ưu khả năng của GPU, từ đó nhận ra tiềm năng hiệu suất tối đa của nó.
Ngoài việc hiển thị nội dung đồ họa, Bộ xử lý đồ họa (GPU) còn có khả năng xử lý nhiều tác vụ khác nhau, bao gồm cả việc thực thi các thuật toán học máy. Tuy nhiên, với DirectX 11, GPU bị hạn chế chỉ thực hiện một trong các tác vụ này tại bất kỳ thời điểm nào và theo trình tự định trước. Hạn chế này dẫn đến việc sử dụng tài nguyên GPU dưới mức tối ưu, ảnh hưởng tiêu cực đến hiệu suất tổng thể.
Hãy xem xét phép ẩn dụ về người phục vụ tại một nhà hàng. Trong khi chờ gọi món, người phục vụ bắt đầu bằng cách hỏi về món rượu ưa thích của khách hàng. Sau khi nhận đồ uống của họ, người phục vụ sẽ tiến hành hỏi về món ăn chính. Quá trình từng bước này diễn ra sau đó, mặc dù có hiệu quả nhưng lại thiếu hiệu quả tối ưu do tính chất tuần tự của nó.
Trong lĩnh vực khoa học máy tính, các tài sản đơn vị xử lý đồ họa (GPU) riêng biệt có thể quản lý các đơn hàng riêng lẻ do khách hàng của nhà hàng đặt. Trong khi chờ đợi bữa ăn, các tài nguyên GPU dành riêng cho quá trình đặt hàng này vẫn chưa được sử dụng cho đến khi chúng được yêu cầu xử lý yêu cầu của khách hàng đối với món khai vị của họ. Bằng cách tận dụng khả năng của kiến trúc điện toán không đồng bộ của DirectX 12, nhân viên phục vụ có thể thu thập tất cả các đơn hàng cùng lúc một cách hiệu quả, giống như dịch vụ tiện ích được cung cấp bởi các cơ sở bán đồ ăn nhanh phổ biến. Cách tiếp cận này tối ưu hóa việc sử dụng tài sản GPU và nâng cao hiệu suất tổng thể khi chơi game.
DirectX 12 giới thiệu Đối tượng trạng thái đường ống (PSO) cho phép các nhà phát triển kiểm soát tốt hơn khả năng xử lý đồ họa của họ. Trong các phiên bản trước như DirectX 11, phần cứng hoàn toàn chịu trách nhiệm diễn giải và hiển thị dữ liệu đồ họa thông qua đường dẫn đồ họa, bao gồm một loạt đầu vào và đầu ra dẫn đến kết xuất khung hình. Mặc dù quy trình đồ họa cung cấp nền tảng để hiển thị hiệu quả nhưng nó không phải là không có những điểm không hoàn hảo.
Cấu hình hiện tại bao gồm một loạt các trạng thái đa dạng, chẳng hạn như trạng thái rasterize, trạng thái hòa trộn và trạng thái stencil độ sâu, cùng với một số trạng thái khác. Trong DirectX 11, sự phụ thuộc lẫn nhau tồn tại giữa các trạng thái khác nhau này, khiến chúng phụ thuộc tuần tự vào sự hoàn thành của nhau. Do đó, GPU vẫn không được sử dụng đúng mức trong khi CPU gặp phải tình trạng tăng chi phí hoạt động, ảnh hưởng tiêu cực đến hiệu suất tổng thể.
DirectX 12 đã giải quyết vấn đề này bằng cách giới thiệu các Đối tượng bề mặt chính (PSO), đại diện cho trạng thái tổng thể của quy trình đồ họa. Được khái niệm hóa như một thùng chứa, PSO bao gồm tất cả các thành phần cần thiết để hiển thị hình ảnh. Bằng cách sử dụng PSO, GPU có thể thực hiện xử lý ưu tiên các trạng thái phụ thuộc lẫn nhau thay vì tính toán liên tục chúng dựa trên đường dẫn đồ họa đang hoạt động.
Thật vậy, DirectX 12 cho thấy mức độ căng thẳng của CPU giảm đáng kể khi so sánh với phiên bản tiền nhiệm của nó, DirectX 11, dẫn đến việc nâng cao hiệu quả tổng thể của hệ thống. Trên thực tế, Microsoft đã báo cáo rằng API mới có thể cắt giảm tới một nửa mức sử dụng CPU và nâng cao năng suất GPU lên khoảng 1/5. Tuy nhiên, điều quan trọng cần lưu ý là những tối ưu hóa này có thể khác nhau tùy thuộc vào nhiều yếu tố khác nhau, chẳng hạn như cấu hình phần cứng và thông số cụ thể của ứng dụng.
Tại sao việc chuyển từ DirectX 11 sang DirectX 12 không hề đơn giản
Buổi giới thiệu DirectX 11 cho Windows Vista diễn ra vào ngày 27/10. Sau đó, việc phát hành DirectX 12 diễn ra vào năm 2015, dẫn đến khoảng thời gian sáu năm giữa DirectX 11 và DirectX 12. Trong suốt những năm này, nhiều trò chơi điện tử đã được tạo ra bằng cách sử dụng DirectX 11 làm nền tảng. Tuy nhiên, việc chuyển đổi từ DirectX 11 sang DirectX 12 đặt ra những thách thức đáng kể.
DirectX 11 là giao diện lập trình nâng cao giúp đơn giản hóa việc phát triển bằng cách cung cấp chức năng cấp cao hơn. Điều này dẫn đến các trò chơi video hiệu quả và hấp dẫn hơn. Ngược lại, DirectX 12 hoạt động ở mức độ trừu tượng thấp hơn, đòi hỏi chuyên môn chuyên sâu để sử dụng hiệu quả. Tuy nhiên, cách tiếp cận này cho phép kiểm soát tốt hơn việc tối ưu hóa hiệu suất trên cơ sở chi tiết.
Thật vậy, hiệu quả của trò chơi được tạo bằng DirectX 12 có thể phụ thuộc vào trình độ của nhà phát triển đối với API. Mặc dù DirectX 12 cung cấp một số cải tiến nhất định nhưng kết quả cuối cùng sẽ phụ thuộc vào khả năng sử dụng nó một cách hiệu quả của người lập trình. Do đó, nhiều lập trình viên lựa chọn các API cấp cao hơn như DirectX 11 do tính dễ sử dụng và khả năng truy cập của chúng.
DX 11 vs DX 12: Bạn nên chọn cái nào?
Tính khả thi của việc sử dụng DirectX 12 trong Guild Wars 2 phụ thuộc vào một số yếu tố, bao gồm cả trò chơi cụ thể đang được chơi. Trong trường hợp này, Guild Wars 2 được thiết kế để hoạt động độc quyền với DirectX 11, mặc dù có khả năng tương thích với DirectX 12 dựa trên khả năng phần cứng và hệ điều hành của người dùng. Tuy nhiên, lựa chọn giới hạn trò chơi ở DirectX 11 chỉ thuộc về các nhà phát triển tại ArenaNet.
Nguồn hình ảnh: Martin Kerstein/Guild Wars 2
Thật vậy, cần lưu ý rằng ArenaNet cần một khoảng thời gian đáng kể là 9 năm để chuyển đổi từ DirectX 9 sang DirectX. Tuy nhiên, một số trò chơi điện tử nhất định được trang bị khả năng hoạt động đồng thời với cả DirectX 11 và DirectX 12, chẳng hạn như Fortnite, mà người dùng có thể hãy tham khảo hướng dẫn toàn diện của chúng tôi về Fortnite để biết thêm thông tin chi tiết. Ngoài ra, các tựa game phổ biến như Battlefield 5, Shadow of the Tomb Raider và các tựa game khác cũng cung cấp khả năng tương thích này, cho phép người chơi dễ dàng chuyển đổi giữa DirectX 11 và DirectX 12 trong cài đặt trò chơi của họ.
Có thể việc một số trò chơi nhất định tương thích với cả DirectX 11 và 12 đã khiến bạn thắc mắc về tác động của chúng đối với hiệu suất trong trò chơi. Cụ thể, bạn có thể tò mò liệu việc chọn DX 11 hay DX 12 có mang lại hiệu suất được cải thiện trong các trò chơi này hay không. Để giải quyết câu hỏi này, chúng tôi đã chuẩn bị một video so sánh tác động của từng phiên bản DirectX trên nhiều tựa game khác nhau, trình bày dữ liệu như FPS trung bình, mức sử dụng CPU và mức sử dụng GPU, sử dụng AMD Ryze 3600, Nvidia GeForce RTX 3060 Ti và RAM 16GB DDR4.
Những phát hiện này gợi lên cảm giác ngạc nhiên vì thường có sự chênh lệch về mặt hình ảnh rất nhỏ giữa DX 11 và DX 12, mặc dù chúng được phát hành cách nhau vài năm. Hơn nữa, điều đáng chú ý là mức sử dụng GPU và CPU có xu hướng thấp hơn đối với các lần lặp DX 12 của mỗi tựa game khi so sánh với các phiên bản DX 11 tương ứng của chúng.
Thật vậy, việc chọn bộ xử lý đồ họa (GPU) tương thích với DirectX 11 hoặc DirectX 12 là rất quan trọng khi đưa ra quyết định như vậy. Mặc dù nhiều GPU hiện đại có khả năng hỗ trợ DirectX 12, nhưng một số GPU cũ nhất định, chẳng hạn như Radeon HD phát hành năm 2008, có thể không có các khả năng cần thiết để xử lý các tựa game mới hơn phụ thuộc nhiều vào các API này. Do đó, việc sử dụng GPU lỗi thời có thể hạn chế khả năng tận hưởng trải nghiệm chơi trò chơi gần đây của một người do khả năng tương thích hạn chế với DirectX 11 và DirectX 12.
DirectX 12 có phải là lựa chọn phù hợp cho bạn không?
Việc xác định chuyển đổi từ DirectX 11 sang DirectX 12 không phải là vấn đề không phức tạp vì nó phụ thuộc vào một số biến số bao gồm cấu hình phần cứng, khả năng tương thích phần mềm, hệ điều hành và liệu trò chơi cụ thể có hỗ trợ cả hai phiên bản hay không. Do đó, phải cân nhắc cẩn thận trước khi đưa ra bất kỳ kết luận nào, dự kiến kết luận này vẫn có thể áp dụng cho các phiên bản DirectX tiếp theo.