Nhận hướng dẫn làm đề tài, luận văn tốt nghiệp đại học. Bảo mật, tận tình, chi tiết.
Gọi: 0928.044.232 www.cachlamdoan.com
Tài trợ bài viết này và giới thiệu dịch vụ, sản phẩm, thương hiệu, nhu cầu tuyển dụng của doanh nghiệp đến với cộng đồng.
Vũ Quang Huy 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. Nhân sự kiện DirectX 12 ra mắt cùng với Windows 10, bài viết là sự tổng hợp quá trình phát triển của DirectX trong suốt hơn 20 năm tồn tại.
Nội dung bài viết

Giới thiệu

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.

ss_1

The Elder Scrolls: Arena (1994)

ss_2

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.

Tiền đề bài viết

Công việc của tôi liên quan trực tiếp đến việc phải cập nhật liên tục những công nghệ mới, và một trong số đó là những thư viện đồ họa tân thời. Ý tưởng viết bài này đến với tôi thông qua sự kiện Windows 10 được chính thức phát hành song song với thư viện DirectX 12.

Đối tượng hướng đến

Bài viết này như một tài liệu tham khảo 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.

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.

ss_4

Craig Eisler

ss_5

Alex St. John

ss_6

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 OSR2Windows 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 Direct3DDirectPlay 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, 2004

21 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
ss_7 ss_8

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

THẢO LUẬN
Kiến thức tự hào rằng nó biết quá nhiều, trí tuệ khiêm tốn rằng nó không biết nhiều. Scott Rosenberg
300x250

Liên hệ tài trợ cho STDIO

Tham gia tài trợ STDIO và đặt quảng cáo theo định kỳ của cá nhân, cửa hàng, doanh nghiệp của bạn tại đây.
Gọi: 028.36205514 www.stdio.vn/contact
ĐÓNG