Tại sao mỗi lần cài game bạn lại phải cài thư viện DirectX?

DirectX là một phần của hệ điều hành Windows. Vậy thì tại sao mỗi lần cài game (từ Steam, Origin...) bạn lại phải cài một bản DirectX khác do chính game đó cung cấp?

DirectX là gì?

DirectX là một phần của hệ điều hành Windows, gồm một tập hợp các hàm API (giao diện chương trình ứng dụng) mà các nhà phát triển có thể tận dụng vào các tính năng liên quan đồ hoạ 3D, video, multimedia, âm thanh, và gamepad trên Windows. Rất nhiều game trên Windows sử dụng Direct3D của DirectX cho đồ hoạ, nếu không thì chúng sẽ phải sử dụng các hàm đa nền tảng khác như OpenGL hoặc Vulkan. Các ứng dụng khác (không phải game) có thể sử dụng DirectX cho các tính năng liên quan đồ hoạ 3D.

Windows 7 đã được tích hợp sẵn DirectX 11, còn Windows 10 là DirectX 12. Khi các nhà phát triển làm game, họ sẽ chọn một phiên bản DirectX nhất định làm nền tảng. Game được viết trên nền tảng DirectX 11 sẽ không thể chạy trên Windows XP vốn chỉ hỗ trợ tối đa DirectX 9.

Kiểm tra phiên bản DirectX bằng cách: nhấn Windows + R, gõ lệnh "dxdiag" và nhấn Enter. Phiên bản DirectX hiển thị ở mục DirectX Version trong thẻ System.

Sự phức tạp của việc cài đặt DirectX

Đối với hệ thống 32-bit, các file của DirectX được đặt trong thư mục C:\Windows\System32. Đối với hệ thống 64-bit, các file 64-bit được đặt trong thư mục C:\Windows\System32, còn các file 32-bit thì lại được đặt trong thư mục C:\Windows\SysWOW64 (thật là ngược đời!). Các game 32-bit cần các file thư viện phiên bản 32-bit, còn các game 64-bit lại cần các file thư viện phiên bản 64-bit.

Có thể thấy, thư viện Direct3D của DirectX có rất nhiều file thư viện với các phiên bản khác nhau. Một game có thể chỉ cần một file thư viện nhất định, trong khi một số game khác lại yêu cầu nhiều thư viện khác nhau; và nếu thiếu các file thư viện đó thì game không thể chạy được. Ví dụ, nếu một game cần file d3ddx10_40.dll, bạn cần cài đặt đúng file đó chứ không phải file d3ddx10_41.dll.

Tuy nhiên, Microsoft không tích hợp tất cả các file thư viện nêu trên trong Windows, và ngay cả khi bạn chạy file cài đặt của DirectX mới nhất, chưa chắc bộ cài này có chứa file Direct3D mà bạn cần. Microsoft đã nêu rõ trong tài liệu dành cho các nhà lập trình game là: "Windows Update và Service Packs sẽ không bao gồm các thành phần DirectX không quan trọng". Do đó nếu một game hay ứng dụng cần một file thư viện Direct3D cụ thể thì chúng phải tự cài đặt các file đó vào hệ thống trong quá trình cài đặt.

Vấn đề đối với DirectX cũng xảy ra đối với các thư viện Microsoft Visual C++ Redistributable. Các ứng dụng khác nhau sẽ yêu cầu các phiên bản thư viện khác nhau, do đó đừng thấy lạ khi bạn thấy một dãy các phiên bản Visual C++ được cài trong máy bạn.

Tóm lại, mỗi game khi cài đặt phải tự cài đặt các file Direct3D cần thiết để có thể chạy được

Vậy đôi lúc, bạn nhớ rõ ràng bạn đã cài đủ DirectX rồi, và game vẫn tự động cài lại. Tại sao?

Bởi vì chỉ có bộ cài DirectX chính thức của Microsoft là có khả năng kiểm tra file thư viện Direct3D, còn bộ cài game không thể kiểm tra được có phải file Direct3D bạn có sẵn đúng với phiên bản nó cần hay không. Do đó, nó phải chạy bộ cài DirectX có chứa file thư viện nó cần, đồng thời "tranh thủ" giúp bạn sửa lỗi các file thư viện khác bằng cách chép đè lên các file có sẵn luôn.

Như đã nói ở trên, chỉ có bộ cài DirectX chính thức của Microsoft mới cho phép các lập trình viên "thả" file thư viện họ cần vào hệ thống. Các lập trình viên không thể qua mặt hệ thống bằng cách cài file bằng một bộ cài khác được vì làm như vậy sẽ vi phạm giấy phép phần mềm của Microsoft, đồng thời kéo theo nhiều lỗi không đáng có.

Tất nhiên, không phải game nào cũng chạy bộ cài DirectX mỗi khi cài đặt, bởi hiện nay nhiều game được phát triển trên nền OpenGL hoặc Vulkan. Một số game khác chỉ yêu cầu các file cơ bản của DirectX vốn được tích hợp sẵn trong DirectX 9, 10 hay 11 và không cần cài thêm file thư viện DirectX nào khác.

Có thể xoá bỏ các file thư viện DirectX không?

Rõ ràng là không. Nếu một file thư viện DirectX xuất hiện trong hệ thống có nghĩa là có một game hay ứng dụng nào đó đang cần nó, việc xoá file này sẽ dẫn đến lỗi ứng dụng. Bên cạnh đó, không có cách nào để biết được file thư viện nào được dùng bởi game nào, nên bạn cũng chẳng biết nên giữ cái nào và nên xoá cái nào. Tốt nhất là đừng đụng vào chúng, chúng sẽ không chạy cho tới khi được ứng dụng gọi lên, do đó bạn không phải lo về việc tiêu tốn tài nguyên hệ thống.

Khi bị lỗi DirectX thì cần làm gì?

Nếu bạn gặp lỗi liên quan đến DirectX, có nghĩa là quá trình cài đặt DirectX của game đã có vấn đề. Bạn không thể tải bộ cài DirectX từ website của Microsoft, mà phải chạy bộ cài đặt do game cung cấp, thường nằm trong thư mục game hoặc trên đĩa game. Tên bộ cài này thường là DXSETUP.exe.

Theo Tấn Minh/VN Review

Xuất bản ngày 05/09/2017 14:20 GMT +7

Tham khảo gamek

Tin đọc nhiều nhất

Tin mới trong ngày

Lên đầu trang