DirectX vs OpenGL – Hai thư viện đồ họa lâu đời nhất hiện nay

OpenGL

Theo định nghĩa tin học, OpenGL (tiếng Anh Open Graphics Library) là một tiêu chuẩn kỹ thuật đồ họa được hình thành với mục đích định ra một giao diện lập trình ứng dụng (API) theo không gia 3 chiều.

Khoảng 20 năm trước có một người tên là Silicon Graphics (SGI) tạo ra một loại thiết bị nhỏ. Thiết bị này có thể hiện ra các ảo ảnh rất thực tế. Với ảnh 2D, thiết bị đó dám hiện được các ảnh kiểu 3D, mô phỏng cái nhìn và chiều sâu theo mắt của con người. Thiết bị đó được gọi là IrisGL (có lẽ vì nó cố thử mô phỏng theo mắt của con người).

Ghê chưa, thiết bị đó là thư viện đồ họa đầu tiên. Nhưng nó chết quá nhanh vì để làm được như thế, anh ta cần điều khiển quá nhiều thứ trong máy tính như card đồ họa, hệ thống windows, các ngôn ngữ lập trình và giao diện tương tác với người dùng cuối. Quá nhiều thứ thậm chí để cho 1 công ty quản lý, chưa nói đến 1 người. Vì vậy SGI bắt đầu chuyển sang một thứ giống như “thẻ tạo đồ họa”, “hệ thống quản lý cửa sổ”, “tạo giao diện người dùng” cho các công ty khác và tập trung vào phần quan trọng nhất của thư viện đồ họa. Năm 1992 đã ra đời OpenGL thế hệ đầu tiên.

Vào năm 1995 Microsoft giới thiệu Direct3D, đối thủ cạnh tranh đáng ghờm với OpenGL. Và chỉ tới năm 1997 OpenGL 1.1 đã được tung ra. Nhưng tới tận năm 2004, OpenGL mới có thể thu hút được tôi, OpenGL 2.0 với những tính năng tuyệt vời. Tôi thực sự thích Shaders, lập trình pipeline (programmable pipeline).

Cuối cùng vào 2007 OpenGL ES 2.0 đã mang sức mạnh của Shader và Programmable pipeline tới các hệ thống nhúng.

Ngày nay, bạn có thể thấy logo của OpenGL (hoặc OpenGL ES) trong rất nhiều trò chơi, ứng dụng 3D, 2D và rất nhiều phần mềm khác (đặc biệt là phần mềm 3D). OpenGL ES được dùng bởi PlayStation, Android, Nintendo 3DS, Nokia, Samsung, Symbian và tất nhiên cả Apple với MacOS và iOS.

Đi sâu vào bộ xử lý tính toán của OpenGL, ta thấy OpenGL sử dụng tính toán trực tiếp trên GPU – phần cứng xử lý đồ họa cho máy tính – và sử dụng dấu phảy động (floating points). CPU (Central Processing Unit) là chip xử lý của máy tính. Còn GPU (Graphics Processing Unit) là chip xử lý đồ họa. Chip xử lý đồ họa này giúp cho CPU giảm thiểu các công việc nặng nhọc: nó có thể xử lý ảnh trước khi hiện ra màn hình. Hay sâu hơn, những gì OpenGL thực hiện chính là trên GPU, thay vì tính toán trên CPU thì GPU nhanh hơn rất rất nhiều với các số thực so với CPU. Đây là lý do cơ bản để các trò chơi 3D chạy nhanh hơn khi có card đồ họa. Đây cũng chính là lý do cho các phần mềm xử lý 3D chuyên nghiệp giúp chúng ta làm việc với “Software’s Render” (xử lý trên CPU) hoặc “Graphics Card’s Render” (xử lý trên GPU).

Một vài phần mềm cũng cho chúng ta một tùy chọn: Có dùng OpenGL hay không? Và đó, giờ bạn đã biết rồi. Tùy chọn đó chính là dành cho việc xử lý sẽ ở trên GPU hay không. Vì vậy, OpenGL sẽ hoàn toàn làm việc với GPU hay không? câu trả lời là không chắc. Chỉ những thao tác xử lý ảnh và vài thứ khác thôi. OpenGL cho chúng ta rất nhiều chức năng để lưu trữ ảnh, dữ liệu, thông tin trong một định dạng cụ thể. Những định dạng này được xử lý trực tiếp bởi GPU. Vì vậy OpenGL phụ thuộc vào phần cứng. Nếu phần cứng không hỗ trợ OpenGL, chúng ta không thể sử dụng nó. Quá buồn! Các phiên bản mới của OpenGL thường xuyên cần những tính năng mới của GPU. Nhưng cũng đừng lo lắng, OpenGL luôn cần những nhà sản xuất tích hợp vào, chúng ta (những developer – coder) sẽ làm việc trên các phiên bản OpenGL mới chỉ khi thiết bị đã sẵn sàng. Trong thực tế, tât cả các chip đồ họa hiện tại đều hỗ trợ OpenGL. Vì vậy bạn có thể sử dụng OpenGL với rất nhiều ngôn ngữ và thiết bị. Thậm chí với Microsoft Windows.

opengl

DirectX

Theo định nghĩa đơn giản nhất thì DirectX là 1 tập tin thực thi các tác vu liên quan đến hình ảnh, âm thanh như các trò chơi, các phần mềm về thiết kế đồ họa. DirectX có nhiệm vụ xử lý và truyền tải các hình ảnh, âm thanh các trò chơi, phần mềm giữ phần cứng và phần mềm.

DirectX xuất hiện lần đầu trên Windows 95. Vào thời điểm đó, phần lớn các game thủ trên PC vẫn còn dùng nền tảng DOS, thứ mà cho phép các nhà phát triển có thể nói chuyện trực tiếp với các linh kiện PC như card âm thanh, card đồ họa, bàn phím và chuột.

Lúc đầu, DirectX không được quá nhiều người quan tâm đến, do các nhà phát triển vẫn còn phụ thuộc vào OpenGL và khả năng lập trình tốt trên nền tảng DOS. Nhưng rồi bộ API đồ họa của Microsoft dần dần đã lấy được niềm tin của các nhà phát triển khi họ phát hiện rằng nó sẽ không bao giờ biến mất.

Vì vậy, DirectX dần dần đã đẩy được OpenGL ra nơi khác vào thời điểm mà phiên bản 9 (DX9) ra mắt vào năm 2002. Windows XP gần như đã tăng tốc độ phát triển của DirecX khi đây là phiên bản Windows cực kì ổn định và vẫn còn được dùng rộng rãi trên toàn cầu. Windows 10 cũng được đánh giá là nổi tiếng không kém, và đi cùng với nó là phiên bản mới nhất trong dòng DirectX, DirectX 12.

directx

So sánh DirectX và OpenGL

DirectX vs OpenGL – Hai thư viện đồ họa lâu đời nhất hiện nay

Ngày nay DirectX có cấu trúc rất tương tự với OpenGL: dùng ngôn ngữ Shader, cũng có programmable pipeline, thậm chí cũng hỗ trợ cả fix pipeline, hơn nữa là tên của các hàm trong API cũng tương tự luôn. Sự khác nhau chỉ là OpenGL là miễn phí, luôn luôn mở, nhưng DirectX là đóng. OpenGL cho iOS, MacOS, hệ thống Linux trong khi DirectX chỉ dành cho hệ điều hành của Microsoft.

Categories:   Review

Bình luận