Tìm hiểu về DirectX, OpenGL và Vulkan, nguồn gốc của những tựa game bạn yêu thích
Ai là game thủ lâu năm thì chắc cũng đã ít nhất một lần nghe đến những cái tên như DirectX, Vulkan, OpenGL rồi đúng không nào? Vậy thì chúng là gì nhỉ?
Để giải thích một cách đầy đủ thì phức tạp lắm nhưng mà để giải thích cho các bạn hiểu chúng thực chất là gì thì đơn giản lắm. Đầu tiền để hiểu được chúng là cái gì thì các bạn hãy cùng mình nói sơ qua khái niệm API nhé.
API là gì và chúng ảnh hưởng như thế nào đến game?
Nếu hiểu một cách đơn giản thì API (Application Programming Interface) là các chương trình “đệm” giữa phần cứng và phần mềm, mỗi khi phần mềm muốn phần cứng làm việc gì đó thì nó sẽ yêu cầu cho API và API sẽ đóng vai trò trung gian để “thông dịch” cho phần cứng làm theo yêu cầu của phần mềm. Ví dụ game muốn dựng hình thì nó sẽ không thể ra lệnh trực tiếp cho GPU và CPU được, muốn làm việc đó thì nó phải thông qua API để chuyển lệnh dựng hình cho GPU và CPU, và đến lúc đó thì GPU và CPU mới bắt đầu dựng hình trong game.
Để cho dễ hiểu thì trong đó, game là người yêu cầu công việc, phần cứng của máy tính là người thực hiện công việc và API là người nghe game nói, phiên dịch rồi nói lại cho phần cứng hiểu để thực hiện công việc mà game yêu cầu. Hiểu nôm na thì API là một chuẩn chung, một ngôn ngữ chung của phần cứng và phần mềm. Không có API thì đừng hòng có ông nào làm việc được hết.
Vậy DirectX, Vulkan, OpenGL là gì?
DirectX
DirectX là một tập hợp các API để xử lý các nhiệm vụ liên quan đến đa phương tiện (trong đó có cả game) do Microsoft phát triển. Chúng kiểm soát những thứ như đồ họa, dựng hình 3D, xử lý âm thanh vân vân và vân vân, gần như tất cả mọi thứ mà bạn có thể nghe thấy nhìn thấy khi giao tiếp với máy tính trên hệ điều hành Windows đều do DirectX kiểm soát. Phiên bản mới nhất của DirectX là DirectX 12 chỉ tương thích hoàn toàn trên Windows 10.
Vì là sản phần “nhà trồng Microsoft nên DirectX chỉ chạy được với hệ điều hành Windows và máy Xbox nên các nhà phát triển game sẽ chỉ có thể dùng DirectX cho các nền tảng này. Đối với các nền tảng khác như PlayStation và MacOS thì họ sẽ phải chuyển sang dùng bộ API khác. Tuy nhiên, dù hạn chế về mặt tương thích đa nền tảng nhưng vì được chuyên hóa cho cho các nền tảng đó nên DirectX được tối ưu hóa rất tốt.
Ưu điểm
- Do Microsoft phát triển nên sẽ tương thích tốt với hệ điều hành Windows.
- Được các nhà phát triển sử dụng cực kỳ rộng rãi và phổ biến hơn nhiều so với đối thủ chính của nó là Vulkan.
Nhược điểm
- Chỉ chạy trên Microsoft Windows và Microsoft Xbox.
- DirectX 12 chỉ tương thích hoàn toàn trên Windows 10.
- DirectX 12 chỉ tương thích hoàn toàn với các GPU Nvidia từ thế hệ Maxwell (900 series) trở đi và GPU AMD từ 7300 trở đi.
Tóm lại thì DirectX được tối ưu hóa rất tốt trên các nền tảng của Microsoft nhưng lại không tương thích với đa nền tảng, DX12 mới nhất thì chỉ hỗ trợ phần cứng mới.
Vulkan và OpenGL
Vulkan là “hậu duệ” của OpenGL, nó là một API đồ họa của tập đoàn Khronos, bao gồm các công ty như AMD, NVIDIA, Intel, AMD, Sony và Google… được tạo ra để trở thành đối trọng và cạnh tranh lành mạnh với DirectX. API này hướng đến các ứng dụng đồ họa 3D (như video game) và các phương tiện tương tác. So với đối thủ lớn nhất của nó là DirectX thì Vulkan có khả năng tương thích tốt với nhiều nền tảng hệ điều hành khác nhau hơn. Vulkan cũng chứa toàn bộ mã nguồn của một API trước đó là Mantle do AMD phát triển, thế nên các game chạy Vulkan thường “ưu ái” cho các GPU của AMD
Ví dụ như khi phát triển game cho các nền tảng như PlayStation và MacOS thì một bộ API như Vulkan sẽ là lựa chọn ưu tiên của các nhà phát triển. Vulkan cũng cho phép can thiệp sâu vào GPU, ít ngốn CPU và phân phối công việc cho từng nhân CPU tốt hơn so với DirectX.
Ưu điểm:
- Vulkan hỗ trợ cả các phần cứng cũ của NVIDIA như GPU từ 600 series, GPU AMD thì từ 7700 trở đi.
- Cho phép can thiệp sâu vào GPU để tối ưu hóa hiệu suất.
- Ít ăn CPU hơn so với đối thủ chính của nó là DirectX.
- Tương thích đa nền tảng. Cân tốt Windows, PlayStation, MacOS, SteamOS hay thậm chí là cả mảng di động nữa.
Nhược điểm
- Ít phổ biến hơn so với DirectX.
- Tối ưu chưa thực sự tốt cho phần cứng NVIDIA.
*Lưu ý: Vulkan mặc dù ra sau và mang đến nhiều tính năng hơn người tiền nhiệm OpenGL nhưng vẫn chưa thể thay thế hoàn toàn cho bộ API này. Vulkan cho phép bạn làm nhiều thứ hơn, tùy biến sâu hơn nhưng nó cũng bắt bạn phải làm khối lượng công việc nhiều hơn so với OpenGL.
Sức ảnh hưởng của DirectX và Vulkan đến game
Game engine hay game đều phải dựa vào các API để có thể giao tiếp với phần cứng, nên các API cũng quyết định nhiều đến hiệu suất của phần cứng khi vận hành game. Ví dụ như các game sử dụng DirectX sẽ chạy tốt trên GPU của NVIDIA hơn, trong khi đó thì các GPU của AMD sẽ có lợi thế và cho hiệu suất cao hơn khi chạy các game dùng Vulkan. Trên cùng một ứng dụng 3D hỗ trợ cả DirectX và Vulkan thì nếu bạn chạy nó với DirectX, ứng dụng đó (thường) sẽ ăn CPU hơn so với Vulkan trên cùng một tác vụ.
DirectX và Vulkan đều có những ưu điểm và nhược điểm riêng, chúng phù với những mục đích sử dụng khác nhau. Cùng nhau, chúng góp phần không nhỏ để tạo nên thế giới game mà chúng ta đang thấy.
Lý do chính khiến bạn nên quan tâm đến DirectX và Vulkan là vì có game dùng cái này, có game dùng cái kia. Đối với các game dùng Vulkan thì GPU của AMD sẽ có lợi thế hơn và cho hiệu suất cao hơn so với GPU của NVIDIA, thường thì các game đa nền tảng sẽ dùng Vulkan. Ngược lại đối với các game sử dụng DirectX thì nó sẽ được tối ưu hóa tốt hơn trên GPU của NVIDIA.