DirectX và OpenGL

Công nghệ đồ hoạ phát triển nhanh một cách đặc biệt trong lĩnh vực công nghiệp PC , bằng những Chipset mới , nâng cấp cải tiến Chipset , thậm trí xây dựng lại hoàn toàn công nghệ mới .
DirectX

 Công nghệ đồ hoạ phát triển nhanh một cách đặc biệt trong lĩnh vực công nghiệp PC , bằng những Chipset mới , nâng cấp cải tiến Chipset , thậm trí xây dựng lại hoàn toàn công nghệ mới . Hiện nay một vấn đề là làm thế nào mà những ứng dụng lại sử dụng được hết những phần cứng 3D mới nhất , những nhà phát triển đã viết những mã lệnh để dùng được với mọi bộ vi xử lí đồ hoạ ( GPU ) .

 Giải pháp đó là API (Application Programming Interface  - Giao diện lập trình ứng dụng ) . Những API hành động như là vai trò trung gian giữa phần mềm ứng dụng và phần cứng khi nó được kích hoạt . Những nhà sản xuất phần mềm viết những mã lệnh mà những đầu ra những dữ liệu đồ hoạ của nó tới API , hơn là trực tiếp tới phần cứng . Những nhà sản xuất phần cứng viết Driver , sau đó dịch mã chuẩn này tới định dạng mà mọi phần cứng đều hiểu được .

 Được giới thiệu lần đầu tiên năm 1995 , DirectX là tập lệnh tích hợp của những công cụ lập trình để giúp những nhà phát triển thực hiện những ứng dụng Multimedia cho nền tảng Windows . Nó bao trùm lên hầu hết tất cả những khía cạnh của nội dung Multimedia trong thời gian đó .

 DirectX 7.0 được giới thiệu lần đầu tiên vào năm 1999 gồm những thành phần chính như sau :

 

  • Direct3D : dùng cho đồ hoạ 3D trong thời gian thực . Đồ hoạ 3D là hiển thị những vật thể và những cảnh bằng những thông tin về chiều cao , độ rộng , độ sâu .Những thông tin được tính toán trong hệ thống toạ độ được trình diễn theo ba hướng qua trục : x, y, z.
  • DirectDraw : dùng để tăng tốc cho những đồ hoạ 2D.
  • DirectSound : dùng để thu phát âm thanh .
  • DirectPlay : dùng cho kết nối mạng ( đặc biệt dùng cho nhiều người chơi trên mạng Internet ) .
  • DirectInput : dùng cho Joystick và những thiết bị liên quan .
  • DirectMusic : dùng cho dữ liệu âm nhạc dựa trên những tin nhắn .

 

DirectX 8.0 phát hành cuối năm 2000 , đã kết hợp những thành phần hợp thành DirectSound và DirectMusic để  trở thành DirectAudio và tách những chức năng cuối cùng của đồ hoạ 2D và 3D với Direct3D và DirectDraw để hợp thành DirectX Graphic . Nó cũng lấy những thành phần của DirectShow , trước kia thực hiện như là API tách rời , trở thành một thành phần chính thức trong DirectX .

 Trên thực tế , thành phần DirectDraw chủ yếu thực hiện giao diện Direct3D và Direct3D API sẽ vẫn còn tiếp tục phát triển .

 Tháng 1 năm 2003 , DirectX 9.0 được phát hành , nó cải tiến nhiều việc có ý nghĩa với API bao gồm :

 

  • Khả năng âm thanh mới trong DirectSound.
  • Tăng tốc phần cứng tái tạo Video trong DirectShow.
  • Cải tiến khả năng lập trình đồ hoạ mức thấp bằng kiểu lập trình với Vertex Shader và Pixel Shader 2.0 .

 

Phiên bản này của API rất nổi tiếng và được Microsoft giới thiệu với tên gọi HLSL (High-Level Shader Language  - Ngôn ngữ Shader mức cao ) .

 Phiên bản 9.0 ban đầu của DirectX theo thời gian được nâng cấp và cải tiến để trở thành 9.0a , b và c . Những phiên bản này sẽ cải thiện chế độ an ninh , hiệu suất làm việc và sửa lỗi .

 Hiện nay trong PC có hai giao diện API 3D được sử dụng đó là : OpenGL và Direct3D và chúng đã thống trị được nhiều năm .

 OpenGL

 Được bắt đầu vào năm 1992 do Silicon Graphics (SGI ) phát triển cho CAD và 3D API với giao diện X-terminal (Hệ thống cửa sổ được MIT phát triển chạy trong môi trường UNIX và tất cả hệ thống hoạt động chính . Nó dùng giao thức Client-Server và cho phép những người sử dụng chạy những ứng dụng trên những máy tính khác trong mạng và xem bằng màn hình hiển thị của họ ) dựa trên Unix . OpenGL được phát triển dựa trên thư viện đồ họa của riêng SGI có tên là IrisGL . Ban đầu OpenGL bị hạn chế khi dùng các ứng dụng doanh nghiệp như : công nghiệp , thiết kế máy móc và nội thất , những bài toán phân tích thống kế và khoa học .

 Tuy nhiên API (Application Programming Interface – Giao diện chương trình ứng dụng , nó là tập hợp những hàm , những thủ tục con mà chương trình hoặc ứng dụng , có thể gọi để nói cho hệ điều hành thực hiện nhiệm vụ  . API Windows 95 bao gồm hơn 1000 hàm được viết bằng C, C++ , Pascal và những ngôn ngữ lập trình khác có thể gọi để tạo những cửa sổ , mở những File và thực hiện những nhiệm vụ cơ bản khác ) được lợi do sự phát triển của Game cùng với sự phát triển của những phiên bản Windows trong năm 1996 , và tất cả những gói 3D của PC chính và thậm trí một số gói sản phẩm Low-End đều cung cấp để tăng tốc thực hiện OpenGL .

 Cũng như phần cứng tăng tốc 3D đi vào trong các dòng sản phẩm thông dụng , SGI đã sửa lại điều khoản bản quyền của mình để làm cho OpenGL được “mở “ nhiều hơn , bằng cách như vậy vị trí của nó được gắn chặt với nền tảng API để xây dựng sự ảnh hưởng qua lại trong những ứng dụng 2D và 3D .

 OpenGL API được thiết kế để dùng rộng rãi trong những kĩ thuật đồ hoạ như : Texture Mapping ( khả năng đưa những hình ảnh tới bề mặt đồ hoạ ) , Anti-Aliasing , độ trong suốt , sương mù , ánh sáng ( khả năng tính toán màu sắc của bề mặt khi những kiểu sánh sáng khác nhau tới bề mặt từ một hoặc nhiều nguồn sáng ) , đánh bóng bề mặt ( khả năng tính toán hiệu ứng đánh bóng khi ánh sáng chạm tới bề mặt ở những góc nhìn khác nhau và kết quả cho sự khác nhau về màu sắc một cách huyền ảo qua bề mặt ) , vết mờ khi di chuyển và biến đổi hình tượng ( khả năng thay đổi vị trí , kích thước và luật phối cảnh xa gần của vật thể trong không gian toạ độ 3D ) .

 Những đặc điểm của nó cũng tương tự như những gì Direct3D đã làm , nhưng nó là API mức thấp hơn hơn là đối thủ của nó, cung cấp điều khiển rất đẹp lên những thành phần cơ bản của việc tạo ra những cảnh 3D như là Vertext (vị trí không có kích thước trong ba hoặc bốn kích thước không gian mà cắt bởi hai hay nhiều đường – ví dụ như gờ của hình ảnh) và những thông tin về tam giác (hình cơ bản để tạo hình khối trong đồ hoạ 3D ) .

  

\"/\"

 

Vertex

 Ứng dụng OpenGL phải cung cấp tất cả thông tin hình học cho mỗi điểm nhỏ nhất trong cơ sở dữ liệu 3D ( thông thường là những điểm , những đường và những hình đa giác mô tả hình thù hình học cơ bản – như những hình cầu , những hình khối , hình trụ ....Một số phần cứng và phần mềm 3D còn đưa ra những hình cong gọi là “spline” ) trong quang cảnh , cũng như vậy đối với những hiệu ứng có được với điểm nhỏ nhất trong cơ sở dữ liệu 3D ( màu sắc , độ trong suốt , sương mù .... ) .

 Độ trong suốt là tính năng có thể nhìn qua một vật thể khác , Khái niệm độ trong suốt và tính mờ thường hay dùng đồng nghĩa ; tuy nhiên Trong suốt về kỹ thuật có nghĩa là “ nhìn qua lớp kính trong sạch , tính mờ có nghĩa là “ nhìn qua lớp kính mờ “.

 Mức độ điều khiển của nó là nguyên nhân chính để cho những nhà phát triển tuyên bố OpenGL dễ dàng hơn để tạo những ứng dụng so với Direct3D và tin cậy hơn với những nền tảng phần cứng khác nhau .

 Có hai mức độ cơ bản hỗ trợ phần cứng tăng tốc cho OpenGL .

 

  • ICD (Installable Client Drivers ) tăng nhanh hơn với tính toán ánh sáng , sự biến đổi và Rasterisation ( là sự chuyển đổi của cảnh 3D đa giác , được lưu trữ trong bộ đệm khung hình , thành những hình ảnh đầy đủ với bố cục  , độ sâu và ánh sáng .
  • MCD (Mini Client Servers ) hỗ trợ cho Rasterisation .

 Trong khi MCD được viết dễ dàng từ các nhà sản xuất phần cứng , ISD được dùng để thực hiện mức cao hơn .

 Trong năm 1992 , ARB (Architecture Review Board ) được dùng rộng rãi trong công nghiệp đã chú ý tới sự phát triển và tiến triển của OpenGL để tạo ta những chi tiết kỹ thuật mới cho API hàng năm . Chi tiết kĩ thuật của OpenGL 1.4 và 1.5 được thông báo vào mùa hè năm 2002 và năm 2003 có thêm những tính năng kỹ thuật và những đặc điểm mới . Một điều quan trọng , mới đây nhất bao gồm Ngôn ngữ OpenGL Shading , là ngôn ngữ được chờ đợi trong một thời gian dài của API để lập trình Vertex Shader và Pixel Shader , đã được mở rộng và phát triển .

 Ngôn ngữ OpenGL Shading nhanh chóng trở nên hỗ trợ rộng rãi để phát triển sự tương tác lẫn nhau của đồ hoạ và những ứng dụng hình tượng , được thực hiện trên Unix , Microsoft Windows , Linux và những hệ điều hành khác .

 Trong năm 2004 , phiên bản OpenGL 2.0 được phát hành , nó có những đặc điểm mới bao gồm :

 

  • Lập trình Shading , bằng cả Ngôn ngữ OpenGL Shading và API của nó trở thành nét đặc trưng nhân OpneGL . Chức năng mới bao gồm khả năng tạo Shader ( Shader là thuật toán mà mô tả bằng toán học làm thế nào những vật liệu riêng lẻ hoàn trả lại vật thể và ánh sáng tương tác với nhau như thế nào trong sự xuất hiện toàn cảnh ) và những vật thể lập trình được ; và khả năng viết Vertex và những đoạn Shader trong Ngôn ngữ OpenGL Shading .
  • Tái tạo nhiều đích mà cho phép những Shader được lập trình viết những giá trị khác nhau tới nhiều bộ đệm đầu ra .
  • Hỗ trợ giảm công suất tiêu thụ trên bộ nhớ khi dùng với những bố cục hình chữ nhật .
  • Tô khuôn hai mặt , có khả năng định nghĩa hàm tô khuôn cho mặt trước và mặt sau của hình gốc ban đầu , cải thiện hiệu suất của khối lượng Shadow và thuật toán xây dựng khối hình học .
  • ....

 

OpenGL 2.0 tương thích hoàn toán với những phiên bản trước kia .

 Direct3D ( D3D )

 

 

 Một cách để D3D cho phép những nhà phát triển Game tới những nhà sản xuất Game độc lập với phần cứng của PC chính là lớp HAL (Hardware Abstraction Layer ) ,  tác động thông qua thiết bị phần mềm độc lập .

 HAL cung cấp giao diện với khả năng thực hiện rộng rãi trong phần cứng đồ hoạ 3D và cho phép những nhà sản xuất chế tạo những Driver mà liên kết HAL với phần cứng . Điều này cho phép những ứng dụng D3D khai thác những tính năng của phần cứng mà không cần những thiết bị chuyên dụng .

 

\"/\" 

 

Direct3D không mềm dẻo hơn OpenGL , mặc dù nó có kiểu lập trình mức thấp với hy vọng tương đương với đối thủ của mình , có tên gọi Intermediate Mode .

 Trong D3D quá trình làm việc thông qua Pipeline , hình học của vật thể 3D được CPU xử lí trước khi tới Bộ phận tăng tốc 3D để trình diễn những cảnh 3D trên màn hình . Trong  năm 1998 - những nhà sản xuất Chip lao vào cuộc đua điên khùng khác để có quyền dùng Bộ phận tăng tốc 3D nhanh nhất – DirectX 5 nhanh chóng trở nên bị thắt nút cổ chai trong xử lí 3D . Trong tình huống trở nên tồi tệ thì xuất hiện sự ra đời của những Chip 3D thế hệ thứ ba , Microsoft xem xét lại toàn bộ tính toán thay đổi bên ngoài và ánh sáng API của DirectX để nâng cao hiệu suất của xử lí hình học và cân bằng cấu trúc của hệ thống . DirectX 6.0 ( thực tế phát hành lần thứ năm ) đã được phát hành vào mùa hè năm 1998 có nhiều tính năng mới để cải thiện trình diễn hình ảnh 3D cho Game và những ứng dụng mô hình khác .

 Phiên bản 6 thành phần Direct3D hỗ trợ những Card màn hình mới hơn để thực hiện nhiều trình diễn bố cục trong một câu lệnh , giảm thời gian cần để tạo những những cảnh 3D . Nó cũng thêm những công nghệ mới để cho những cảnh 3D trông như thật như Anistropic Filtering , Bump Mapping - tạo ảo ảnh của bố cục thực tế và nguồn ánh sáng trên mặt phẳng . Khuynh hướng kết hợp của những đặc điểm của OpenGL tiếp diễn để hỗ trợ những phép toán liên quan tới việc tạo khuôn – bằng việc đưa thêm những hình ảnh trong cảnh 3D hơn là chỉ sử dụng vật thể 3D đơn lẻ bên trong .

 Do đó , trong cuộc chiến để thống trị đấu trường đồ hoạ 3D cho PC , chúng ta có Direct3D ở một bên , và OpenGL ở một bên khác được các nhà phát triển hỗ trợ mạnh hơn mà không bị ảnh hưởng từ nền tảng Windows . Trong quá trình để tạo ra DirectX 7.0 đã xuất hiện một vấn đề mới mà cả Microsoft và SGI đã cùng sản sinh ra một cái gọi là Fahrenheit . Tuy nhiên trong thời gian mà DirectX 7.0 xuất hiện trên thị trường năm 1999, mặc dù vẫn theo trào lưu kết hợp những tính năng của OpenGL , những những khái niệm liên quan tới Fahrenheit đã xuất hiện .

 DirectX 7.0 có những tính năng mới và nhanh hơn phiên bản trước tới 20% . Một điều quan trọng trong đó là có sự hỗ trợ của phần cứng tăng tốc T&L (Transformation and Lighting ) có trong những Card màn hình 3D hiện thời – và đáng kế là dựa trên GeForce 256 của nVidia và Savage 2000 của S3 . Từ khi có T&L , một trong những nhiệm vụ mà tập trung cao độ công suất làm việc của CPU trong những Game thời đó , đã được chuyển giao công việc cho Bộ phận tăng tốc 3D chuyên dụng , để CPU được giải phóng đi làm những công việc khác – như Game kiểu trí tuệ nhân tạo – cho phép những nhà phát triển Game kết hợp tạo được nhiều chi tiết hơn và xử lí nhiều hiệu ứng chuyên dụng hơn .

 DirectX 8.0 , được phát hành cuối năm 2000 , đã giới thiệu một số thay đổi quan trọng sau :

 

  • Sự đơn giản hoá giá trị ban đầu và cách sử dụng Direct3D API , sự thích nghi của Direct3D đối với những phiên bản phần cứng mới nhất .
  • Mở rộng giao diện Direct3D thành công nghệ tăng tốc 3D mới như thể tích kết cấu , nhiều mẫu hình ảnh có sẵn , hỗ trợ T-Buffer ....
  • Giới thiệu nguyên lí xử lí dữ liệu mới : những Shader ( Pixel Shader và Vertex Shader ) .

 

Sự thay đổi liên quan tới những Shader cho phép những nhà phát triển thiết kế được linh hoạt hơn và các hình ảnh trông sống động như thật hơn . Có hai kiểu lập trình Shader đó là Vertex Shader và Pixel Shader .

 Những Vertex Shader có thể được dùng cho những hình ảnh động , những bề mặt bên ngoài vật thể , những kiểu ánh sáng mà người dùng định nghĩa , sơ đồ môi trường trung , thủ tục các khối hình học và bất kì thuật toán mà do người phát triển định nghĩa

 Những Pixel Shader được lập trình cho phép  tạo những hiệu ứng thú vị trong hình ảnh .

 Vấn đề quan trọng nhất được giới thiệu trong DirectX 9.0 , được phát hành tháng Một năm 2003 , đó là Ngôn ngữ Shader mức cao HLSL (High-Level Shader Language ) của Microsoft .

 Trước khi có DirectX 9.0 , những nhà phát triển Games muốn phát triển những Shader phải dùng ngôn ngữ lập trình mức thấp rất khó khăn và phức tạp . HLSL đã thay đổi điều đó , nó được giới thiệu để tạo thành môi trường lập trình thân thiện cho nhà phát triển để dễ dàng thực hiện mọi thao tác để lập trình , từ việc tạo những bức ảnh nghệ thuật sống động tới những hiệu ứng được lập trình . Dựa trên ngôn ngữ lập trình C , HLSL tương thích với tất cả những bộ vi xử lí đồ hoạ dựa trên cớ sở DirectX , nó cho phép những nhà phát triển tạo được các hiệu ứng hình ảnh tương tự nhau trên những nền tảng phần cứng khác nhau mà không cần phải lập trình chi tiết cho từng nền tảng một .

 Fahrenheit

 Fahrenheit là một sáng kiến khác của Microsoft và sau này trở thành người sáng lập đã thay đổi nhanh chóng lĩnh vực công nghệ đồ hoạ Multimedia . Nó xuất hiện trong cuộc chiến giữa những API đồ hoạ 3D trong máy tính của Silicon Graphic ( SGI ) và Microsoft vào giữa thập kỷ 90 của thế kỷ 20 . Trong thời gian đó OpenGL của SGI đã trở thành chuẩn không thể thiếu được cho việc sử dụng trên những máy trạm và Direct3D 3.0 của Microsoft đang là sơ khai của API 3D cho Windows 95 và lập trình Game .

 Microsoft có giấy phép OpenGL , để trợ giúp trong việc Windows NT cố gắng kiếm một vị trí với hệ điều hành cho máy trạm . Cuối năm 1997 , Microsoft nhận thấy đó chỉ là một giải pháp tạm thời và bắt đầu làm việc với SGI trong dự án có tên là Fahrenheit với mục đích cuối cùng là hợp nhất Direct3D và OpenGL thành API mức cao chung cho những đồ hoạ 3D .

 Fahrenheit đã bao gồm ba thành phần

 

  • Fahrenheit Scene Graph : nó có chức năng tương tự như Retained Mode mức cao của Direct3D . Nó cho phép những nhà phát triển tập trung tạo ra toàn cảnh hơn là tạo những hình đa giác riêng biệt .
  • Được phát hành trong cùng thời gian đó là FLM (Fahrenheit Large Model Visualisation ) , nó là API mức cao thiết kế cho CAD và những ứng dụng chuyên nghiệp có cấu trúc phức tạp và những bề mặt cong .
  • Một thành phần quan trọng nhất mà không có lịch trình phát hành trước năm 2000 đó là FLL API (Fahrenheit Low Level API ) mà liên quan tới những điều khiển cơ bản của hình học , nó vô cùng quan trọng , được thiết kế để thay thế Immediate Mode của Direct3D và trước đó đã có trong OpenGL .

 

Một số người cho rằng nếu không có sự kết hợp của Microsoft với SGI thì Direct3D không đủ khả năng phát triển tiếp như với ban đầu vốn có của nó . Và có điều không nghi ngờ đó là sự kết hợp giữa hai công ty tạo nên tiền đề cho việc phát triển Game và những phần mềm chuyên nghiệp .

 Tuy nhiên , ban đầu Fahrenheit lại được SGI tập trung và phát triển , cho tới năm 1999 đã trở nên rõ ràng khi Microsoft không có dự định phát hành FLL . SGI đã có vấn đề nghiêm trọng đối với những PC chậm nhưng về sai những Card màn hình cao cấp đang chiếm dần và không lâu sau đã có sự cạnh tranh và đe doạ từ Microsoft . Như chúng ta đã biết , cuối cùng Fahrenhiet đã lụi tàn và chết .

 \"\"\"\"