Search…

DirectX - Lịch Sử Phát Triển và Những Thăng Trầm

06/09/202012 min read
Bài viết dành cho những ai quan tâm đến lịch sử hình thành và phát triển của DirectX.

OpenGL, Direct3D hay rộng hơn là DirectX là một trong những giao diện lập trình ứng dụng (API) về đa phương tiện thông dụng nhất hiện nay. Trong suốt quãng thời gian phát triển của mình, song song với sự phát triển của hệ thống máy tính hiện đại: giá thành ngày càng giảm, sức mạnh được tăng vọt – lấy ví dụ như 20 năm về trước, bộ nhớ máy tính (RAM) cá nhân chỉ khoảng 32MB đã là rất “vĩ đại”; thế nhưng so với hiện nay, bộ nhớ trung bình của một máy tính thường dao động từ 4 - 8GB (gấp hàng trăm lần); hay sự phát triển của các thế hệ hệ điều hành: MS-DOS, Windows 3.1, Windows 95 … cho đến Windows 10 mới nhất.

Song song đó, các thư viện đồ họa cũng phát triển như vũ bão, tại mỗi thời điểm khác nhau, ưu thế của mỗi thư viện có thể khác nhau. Nhưng tựu chung lại cũng nhằm mục đích tận dụng tối đa sức mạnh công nghệ tại thời điểm đó. Trải qua bao thăng trầm, đồ họa máy tính hiện đại đã khác rất rất xa so với thời điểm mới ra đời.

The Elder Scrolls: Arena (1994)
The Elder Scrolls: Arena (1994)
The Elder Scrolls: Skyrim (2011)
The Elder Scrolls: Skyrim (2011)

Nhân sự kiện Windows 10 được chính thức ra mắt cùng với việc hệ điều hành này được tích hợp sẵn thư viện DirectX 12. Bài viết này như một lời cảm ơn đến những người đã tạo nên lịch sử, thay đổi hoàn toàn ngành công nghiệp đồ họa máy tính vĩnh viễn.

Thư viện DirectX

DirectX là một tài sản của tập đoàn Microsoft. Logo của bộ thư viện này đơn giản chỉ là tên gọi DirectX đi cùng tên của công ty.

ss_3

Mirosoft DirectX là một tập hợp các API (giao diện lập trình ứng dụng) để xử lý các tác vụ liên quan đến đa phương tiện, đặc biệt là lập trình game và video, trên nền tảng Microsoft. Thuở ban đầu, tên gọi của tất cả các API nay đều được bắt đầu bởi tiền tố Direct, ví dụ như Direct3D, DirectDraw, DirectMusic, DirectPlay, DirectSound …

Tên gọi DirectX đôi khi được rút gọn chỉ còn X (X đứng trước tên của những API tương ứng). Khi Microsoft tiến hành phát triển một hệ máy chơi game mới, kí tự X được dùng trong từ Xbox – tên hệ máy chơi game – để ám chỉ việc thế hệ máy chơi game này được xây dựng trên những công nghệ của DirectX. Kí tự X sau đó được dùng để đặt tên cho những API được thiết kế dành riêng cho Xbox như XInput, XACT (Audio Creation Tool) … trong khi tiền tố Direct được Microsoft sử dụng để đặt tên cho các API dành cho Windows như Direct2D, DirectWrite …

Direct3D (các API đồ họa 3D trong bộ thư viện DirectX) được sử dụng rộng rãi trong việc phát triển game cho Windows, Sega Dreamcast, Microsoft Xbox, Microsoft Xbox 360 và Microsoft Xbox One. Direct3D cũng được dử dụng cho những ứng dụng thiết kế đồ họa, xử lý ảnh. Và cũng bởi vì Direct3D là thành phần tiêu biểu cho bộ thư viện DirectX, nhắc tới DirectX là nhắc tới Direct3D, vì vậy đôi khi tên gọi DirectX và Direct3D bị đánh đồng với nhau.

Thư viện DirectX được tải về theo 2 cách:

  • DirectX Runtime Library: bao gồm tập hợp các file DLL cần thiết dành cho những ứng dụng sử dụng thư viện DirectX vận hành được. Bộ thư viện này thích hợp cho người dùng cuối. Ví dụ như DirectX 9.0c Runtime Library.
  • DirectX SDK (Software Development Kit) được phát hành dành cho những nhà phát triển / lập trình viên muốn sử dụng sức mạnh của bộ thư viện DirectX. DirectX SDK bao gồm DirectX Runtime Library cũng như các thư viện, các file header cần thiết, tài liệu và ví dụ minh họa cho các tính năng. Kể từ Windows 8, DirectX SDK được tích hợp luôn trong bộ Windows SDK.

Riêng với Direct3D 9Ex, Direct3D 10 và Direct3D 11 chỉ có thể hoạt động trên các máy tính cài Windows Vista trở về sau do những phiên bản này được xây dựng trên kiến trúc Windows Display Driver Model (WDDM) – kiến trúc đồ họa này được giới thiệu trong Windows Vista. 

Quá trình phát triển

Cuối năm 1994, khi Microsoft chuẩn bị công bố hệ điều hành tiếp theo của họ - Windows 95. Tại thời điểm đó, 3 nhân viên của Microsoft - Craig Eisler, Alex St. John, và Eric Engstrom - lo lắng về việc các lập trình viên có xu hướng đánh giá MS-DOS là nền tảng tốt hơn cho lập trình game, và như vậy sẽ có ít tựa game được phát triển cho Windows 95.

Lý do bởi vì DOS cho phép lập trình viên can thiệp trực tiếp vào các thành phần của hệ thống như: video cards, bàm phím, chuột, thiết bị xuất âm thanh …. Trong khi đó, Windows 95 với kiến trúc chặt chẽ hơn, không cho phép điều này xảy ra. Trong khi chưa đầy 1 tháng nữa Windows 95 sẽ ra mắt, Microsoft cần một chìa khóa để giải quyết mâu thuẫn này. Eisler (development lead), St. John, và Engstrom (program manager) đã làm việc với nhau, đề xuất một giải pháp mà họ đặt tên là DirectX.

Phiên bản đầu tiên của DirectX phát hành vào tháng 9 năm 1995 với tên gọi Windows Games SDK – cũng là sự thay thế cho DCI và WinG API trên Windows 3.1. Nhờ có DirectX (được tích hợp vào trong Windows 95 trở về sau), ứng dụng có thể tận dụng sức mạnh phần cứng để xử lý nhiều tác vụ đa phương tiện. Eisler có đề cập tới sự “điên cuồng” trong việc xây dựng DirectX 1 tới 5 trên blog của anh ta.

Craig Eisler
Craig Eisler
Alex St. John
Alex St. John
Eric Engstrom
Eric Engstrom

Việc chuyển dịch sang DirectX khởi đầu khá chậm chạp vì những lo ngại về sự thay thế của WinG, hiệu năng của DirectX – do Windows thời điểm này được xây dựng trên nền DOS và sự ra đi của nhiều lập trình viên DOS.

DirectX 2.0 trở thành một thành phần của Windows trong phiên bản Windows 95 OSR2 và Windows NT 4.0 vào giữa năm 1996. Do Windows 95 còn quá mới mẻ lúc này nên có rất ít tựa game được phát hành cho nó. Microsoft đã triển khai những chiến dịch quảng bá mạnh mẽ cho DirectX nhằm đánh tan sự hoài nghi của giới lập trình viên về nền tảng này. Tại sự kiện Computer Game Developers Conference năm 1996, Microsoft lần đầu tiên giới thiệu Direct3D và DirectPlay song song với việc minh họa chế độ chơi mạng của game MechWarrior 2.

Thách thức đặt ra cho nhóm phát triển DirectX là làm thế nào DirectX có thể tương thích với nhiều phần cứng khác nhau. Những phần cứng có thể kể đến như những loại card đồ họa, card âm thanh, motherboard, CPU, thiết bị nhập, xuất … Tất cả các phiên bản DirectX được phát hành đều phải được kiểm tra (ở cả bản beta và bản cuối cùng) một cách kỹ càng để đảm bảo tương thích tốt với phần cứng/ phần mềm. Ngoài ra, nhóm phát triển cũng gửi những bản mẫu đến các đối tác để chắc chắn phiên bản sắp phát hành tương thích với những phần cứng mới này.

Trước DirectX, OpenGL là một thành phần của Windows NT. OpenGL tại thời gian này yêu cầu phần cứng cao hơn và tập trung vào các giải pháp kỹ thuật, CAD. Direct3D được Microsoft định hướng là thành phần gọn nhẹ hơn OpenGL và tập trung chủ yếu vào game. Khi các game 3D bắt đầu bùng nổ, OpenGL cũng được phát triển để hỗ trợ tốt hơn cho việc lập trình game, và giờ đây lập trình viên được lựa chọn giữa OpenGL hay Direct3D cho ứng dụng của họ. Cũng từ đây, cuộc chiến không hồi kết giữa OpenGL và Direct3D bắt đầu. Nhiều tranh luận được đưa ra giữa việc xây dựng ứng dụng hỗ trợ đa nền tảng với OpenGL hay chỉ hỗ trợ duy nhất Windows với Direct3D.

Trên các hệ máy chơi game – console – được phát hành bởi Microsoft, DirectX được tùy biến lại dưới sự hợp tác của Nvidia – đối tác phần cứng cho 2 hệ máy chơi game Xbox, Xbox360 – và AMD – hệ máy XboxOne.

Năm 2002, Microsoft phát hành DirectX 9, hỗ trợ lập cho việc lập trình vertex và pixel shader – Shader Model 2.0. Phiên bản Direct9.0c với Shader Model 3.0 được phát hành không lâu sau đó, vào tháng 8 năm 2004.

Tháng 4 năm 2005, DirectShow được gỡ khỏi DirectX và chuyển qua tích hợp vào Microsoft Platform SDK.

Bảng tổng hợp dưới đây liệt kê toàn bộ các phiên bản DirectX, thời điểm ra mắt và các sự kiện liên quan.

Phiên bản DirectX Số phiên bản Hệ điều hành và ghi chú Ngày phát hành
DirectX 1.0 4.02.0095   30 Tháng 9, 1995
DirectX 2.0   Chỉ được phát hành cho một số ứng dụng hãng thứ ba 1996
DirectX 2.0a 4.03.00.1096 Windows 95 OSR2 và Windows NT 4.0 5 Tháng 6, 1996
DirectX 3.0 4.04.00.0068   15 Tháng 9, 1996
4.04.00.0069 Gói cập nhật của DirectX 3.0, bao gồm Direct3D 4.04.00.0069 1996
DirectX 3.0a 4.04.00.0070 Windows NT 4.0 SP3 (và cao hơn) Tháng 12, 1996
DirectX 3.0b 4.04.00.0070 Bản cập nhật nhỏ sửa các lỗi trong phiên bản Windows 95 tiếng Nhật Tháng 12, 1996
DirectX 4.0 n/a Phiên bản này chưa bao giờ được phát hành  
DirectX 5.0 4.05.00.0155 (RC55) Phiên bản thử nghiệm dành cho Windows 2000 4 Tháng 8, 1997
DirectX 5.2 4.05.01.1600 (RC00) Windows 95 5 Tháng 5, 1998
4.05.01.1998 (RC0) Windows 98 25 Tháng 6, 1998
DirectX 6.0 4.06.00.0318 (RC3) Windows CE cho máy Dreamcast 7 Tháng 8, 1998
DirectX 6.1 4.06.02.0436 (RC0)   3 Tháng 2, 1999
DirectX 6.1a 4.06.03.0518 (RC0) Windows 98 SE 5 Tháng 5, 1999
DirectX 7.0 4.07.00.0700 (RC1)   22 Tháng 9, 1999
4.07.00.0700 Windows 2000 17 Tháng 2, 2000
DirectX 7.0a 4.07.00.0716 (RC0)   8 Tháng 3, 2000
4.07.00.0716 (RC1)   2000
DirectX 7.1 4.07.01.3000 (RC1) Windows ME 14 Tháng 9, 2000
DirectX 8.0 4.08.00.0400 (RC10)   12 Tháng 11, 2000
DirectX 8.0a 4.08.00.0400 (RC14) Phiên bản cuối cùng hỗ trợ Windows 95 và software rendering 5 Tháng 2, 2001
DirectX 8.1 4.08.01.0810 Windows XP, Windows XP SP1, Windows Server 2003 và Xbox 25 Tháng 10, 2001
4.08.01.0881 (RC7) Dành cho các hệ điều hành cũ hơn (Windows 98, Windows ME và Windows 2000) 8 Tháng 11, 2001
DirectX 8.1a 4.08.01.0901 (RC?) Phiên bản này cũng cập nhật cho Direct3D (D3d8.dll) 2002
DirectX 8.1b 4.08.01.0901 (RC7) Sửa lỗi của DirectShow trên Windows 2000 (Quartz.dll) 25 Tháng 6, 2002
DirectX 8.2 4.08.02.0134 (RC0) Tương tự như DirectX 8.1b, chỉ nâng cấp DirectPlay lên 8.2 2002
DirectX 9.0 4.09.00.0900 (RC4)   19 Tháng 12, 2002
DirectX 9.0a 4.09.00.0901 (RC6)   26 Tháng 3, 2003
DirectX 9.0b 4.09.00.0902 (RC2)   13 Tháng 8, 2003
DirectX 9.0c 4.09.00.0903 Windows XP SP2  
4.09.00.0904 (RC0)   4 Tháng 8, 2004
4.09.00.0904 Xbox 360, Windows XP SP2, SP3, Windows Server 2003 SP1 và Windows Server 2003 R2 6 Tháng 8, 200421 Tháng 4, 2008
DirectX(cập nhật định kỳ) 4.09.00.0904 (RC0 của DX 9.0c) 9 Tháng 2, 2005 phát hành phiên bản 64-bit đầu tiên.Phiên bản cuối cùng cho Windows 98 SE / ME được phát hành vào 13 tháng 12, 2006.Phiên bản cuối cùng cho Windows 2000 được phát hành vào 5 tháng 2, 2010.Phiên bản hỗ trợ chính thức cho Windows Vista được phát hành vào tháng 4 năm 2006, cho Windows 7 vào tháng 8 năm 2009. Phát hành mỗi 2 tháng từ tháng 10 năm 2004 đến tháng 8 năm 2007. Sau đó phát hành mỗi quý cho đến bản cuối cùng vào tháng 6, 2010.
DirectX 10 6.00.6000.16386 Windows Vista 30 Tháng 11, 2006
DirectX 10.1 6.00.6001.18000 Windows Vista SP1, Windows Server 2008 4 Tháng 2, 2008
6.00.6002.18005 Windows Vista SP2, Windows Server 2008 SP2 28 Tháng 4, 2009
DirectX 11 6.01.7600.16385 Windows 7, Windows Server 2008 R2 22 Tháng 10, 2009
6.00.6002.18107 Windows 7 SP1, Windows Server 2008 SP2 27 Tháng 10, 2009
6.01.7601.17514 Windows 7 SP1, Windows Server 2008 R2 SP1 16 Tháng 2, 2011
DirectX 11.1 6.02.9200.16384 Windows 8, Windows RT, Windows Server 2012 1 Tháng 8, 2012
DirectX 11.2 6.03.9600.16384 Windows 8.1, Windows RT, Windows Server 2012 R2 18 Tháng 10, 2013
DirectX 12 10.00.10240.16384 Windows 10, Xbox One 29 Tháng 7, 2015

DirectX 4 chưa bao giờ được phát hành. Raymond Chen – trưởng bộ phận thiết kế phần mềm của Microsoft – giải thích trong cuốn sách "The Old New Thing" của ông về sự kiện này. Sau khi DirectX 3 phát hành, Microsoft tiến hành phát triển phiên bản DirectX 4 và 5 song song với nhau. Trong đó, DirectX 4 dự định sẽ là một bản cập nhật một số tính năng, trong khi DirectX 5 dự định sẽ là một phiên bản lớn với nhiều cải tiến. Tuy nhiên, lập trình viên tỏ ra không hào hứng với những tính năng sẽ được giới thiệu trong DirectX 4 dẫn tới việc phiên bản này bị "xếp xó" và những tài liệu liên quan tới việc phân biệt 2 phiên bản này cũng bị Microsoft loại bỏ.

Logo

Logo ban đầu có thiết kế mang hướng gần với ký hiệu cảnh báo vùng phóng xạ. Alex St. John, trưởng bộ phát phát triển DirectX, xác nhận việc xây dựng logo dựa trên Manhattan Project (dự án chế tạo bom nguyên tử trong chiến tranh thế giới hai) - tên mã của dự án DirectX cũng là Manhattan Project - là có chủ đích, và thể hiện tham vọng vào DirectX và anh em của nó là Xbox (cũng có logo tương tự) muốn thay đổi toàn bộ cục diện ngành công nghiệp game. Tuy nhiên, Microsoft đã công khai bác bỏ ý kiến này, thay vào đó tuyên bố logo này chỉ đơn giản là một thiết kế mang tính nghệ thuật.

DirectX 1.0 - 8.2 DirectX 9.0 - 12
DirectX 1.0 - 8.2	DirectX 9.0 - 12

Tạm kết

Có thể nói, sự ra đời của DirectX đã lặp lại trật tự cho thế giới đồ họa máy tính và ngành công nghiệp game nói riêng, vốn dĩ trước đây thuộc về OpenGL và rộng cửa cho lập trình viên có thể có lựa chọn cho riêng mình. Ví dụ như các ứng dụng cần chạy trên nhiều nền tảng khác nhau, đặc biệt là các ứng dụng liên quan tới thiết kế sẽ ưu tiên chọn OpenGL và ngược lại, những ứng dụng muốn tối ưu cho Windows, tận dụng các thành phần xây dựng sẵn như xử lý âm thanh, nhập xuất thì có thể lựa chọn DirectX.

Ở bài viết tiếp theo, tôi sẽ nói sâu hơn về lịch sử từng phiên bản và đặc biệt là sự khác nhau của 3 phiên bản phổ biến nhất tại thời điểm này là DirectX 9, 10 và 11. Trong khi đó, mời bạn đọc chiêm ngưỡng những gì mà DirectX 12 làm được qua đoạn tech demo sau của Nvidia.

Tham khảo

https://en.wikipedia.org/wiki/DirectX - 5/8/2015

IO Stream

IO Stream Co., Ltd

30 Trinh Dinh Thao, Hoa Thanh ward, Tan Phu district, Ho Chi Minh city, Vietnam
+84 28 22 00 11 12
developer@iostream.co

383/1 Quang Trung, ward 10, Go Vap district, Ho Chi Minh city
Business license number: 0311563559 issued by the Department of Planning and Investment of Ho Chi Minh City on February 23, 2012

©IO Stream, 2013 - 2024