OpenGL (tiếng Anh Open Graphics Library) là một giao diện lập trình ứng dụng đồ họa (API) cho render đồ hoạ 2D và 3D. API thường được sử dụng để tương tác với một đơn vị xử lý đồ họa (GPU) giúp tăng tốc phần cứng xử lý đồ họa.
OpenGL do Silicon Graphics Inc., (SGI) phát triển vào năm 1991 và phát hành vào ngày 30 tháng 6 năm 1992. Từ năm 2006, OpenGL được quản lý bởi tập đoàn công nghệ phi lợi nhuận Khronos Group. Mặc dù API có thể được triển khai hoàn toàn bằng phần mềm, nhưng nó được thiết kế để được triển khai hầu hết hoặc hoàn toàn bằng phần cứng.
Các phiên bản mới của OpenGL sau này thường được phát hành bởi Tập đoàn Khronos, mỗi phiên bản mở rộng API để hỗ trợ các tính năng mới khác nhau. Chi tiết của từng phiên bản được quyết định bởi sự đồng thuận giữa các thành viên của Tập đoàn, bao gồm các nhà sản xuất card đồ họa, nhà thiết kế hệ điều hành và các công ty công nghệ nói chung như Mozilla và Google.
Điểm nổi bật của OpenGL là ngoài API lõi ra thì các nhà cung cấp card đồ họa (GPU) có thể cung cấp chức năng bổ sung dưới dạng tiện ích mở rộng (extension). Các tiện ích mở rộng giúp bổ sung các chức năng mới và có thể loại bỏ các hạn chế đối với các chức năng OpenGL hiện có.
Các nhà cung cấp có thể sử dụng các tiện ích mở rộng để hiển thị API tùy chỉnh mà không cần sự hỗ trợ từ các nhà cung cấp khác hoặc Tập đoàn Khronos nói chung, điều này làm tăng đáng kể tính linh hoạt của OpenGL.
Trường hợp nếu nhiều nhà cung cấp đồng ý triển khai cùng chức năng bằng cùng một API, tiện ích mở rộng chia sẻ có thể được phát hành, sử dụng mã định danh EXT. Các tính năng được giới thiệu bởi mỗi phiên bản OpenGL mới thường được phát triển từ các tính năng kết hợp của một số tiện ích mở rộng được triển khai rộng rãi.
OpenGL chứa đựng một số lượng lớn các tính năng tích hợp được chỉ định và yêu cầu thông qua API, bao gồm loại bỏ bề mặt ẩn, trộn alpha, chống hiệu ứng răng cưa, làm mịn, tính toán pixel, theo dõi và biến đổi các mô hình, và các hiệu ứng về không khí (sương mù, khói và khói mù).
Nhìn chung, OpenGL được thiết kế nhằm thỏa mãn mục đích chính sau:
- Đơn giản hóa việc tương tác giữa các mô hình không gian ba chiều bằng một giao diện lập trình thống nhất.
- Hỗ trợ tối đa các chức năng của giao diện OpenGL bằng cách ép buộc các phần cứng 3D khác nhau phải tương thích.
Ứng dụng của OpenGL là rất lớn, OpenGL không chỉ được sử dụng rộng rãi trong đồ họa 3D mà còn cả trên đồ họa 2D. Với khoảng hơn 250 hàm đặc biệt trong giao diện lập trình ứng dụng, người dùng có thể ứng dụng để vẽ các cảnh vô cùng khó nhằn chỉ bằng những hàm cơ bản.
Nếu bạn là một dân chuyên về game hoặc sử dụng các phần mềm đồ họa như AutoCAD hoặc CorelDRAW, hẳn đã biết những ý nghĩa mà OpenGL đem lại không chỉ bởi khả năng ưng dụng trong game, thực tế ảo, khoa học, mà còn rất nhiều lĩnh vực CNTT khác.