OpenGL (Open Graphics Library) là một API đa nền tảng, đa ngôn ngữ cho kết xuất đồ họa vector 2D và 3D. API thường được sử dụng để tương tác với bộ xử lý đồ họa (GPU), nhằm đạt được tốc độ kết xuất phần cứng.
Silicon Graphics, Inc. (SGI) Bắt đầu phát triển OpenGL năm 1991 và phát hành nó vào 30 tháng 6 năm 1992; Nó dùng trong các ứng dụng CAD, thực tế ảo, mô phỏng khoa học, mô phỏng thông tin, video game. Từ năm 2006, OpenGL được quản lý bởi consortium công nghệ phi lợi nhuận Khronos Group. Đối thủ chính của OpenGL là DirectX của Microsoft.
Thiết kế
thumb|An illustration of the graphics pipeline process
Đặc tả OpenGL mô tả một API trừu tượng để vẽ đồ họa 2D và 3D. Mặc dù API có thể được triển khai hoàn toàn trong phần mềm, nhưng nó được thiết kế để triển khai hầu hết hoặc hoàn toàn trong phần cứng.
API được định nghĩa là một tập hợp các hàm có thể được gọi bởi chương trình khách, cùng với một tập hợp các hằng số nguyên được đặt tên (ví dụ, hằng số GL_TEXTURE_2D, tương ứng với số thập phân 3553). Mặc dù các định nghĩa hàm bề ngoài tương tự như các định nghĩa của ngôn ngữ lập trình C, chúng không phụ thuộc vào ngôn ngữ. Vì vậy, OpenGL có nhiều language bindings, một số liên kết đáng chú ý nhất là WebGL ràng buộc JavaScript (API, dựa trên OpenGL ES 2.0, cho kết xuất 3D từ trong trình duyệt web); C binding WGL, GLX và CGL; C binding cung cấp bởi iOS; và Java, C bindings cung cấp bởi Android.
Ngoài việc không phụ thuộc vào ngôn ngữ, OpenGL cũng đa nền tảng. Đặc tả kỹ thuật không nói gì về chủ đề lấy và quản lý ngữ cảnh OpenGL, để lại điều này như một chi tiết của windowing system. Vì lý do tương tự, OpenGL hoàn toàn quan tâm đến việc hiển thị, không cung cấp API nào liên quan đến đầu vào, âm thanh hoặc windowing.
Phát triển
OpenGL là một API hiện đang được phát triển. Các phiên bản mới của thông số kỹ thuật OpenGL được Khronos Group phát hành thường xuyên, mỗi phiên bản đều mở rộng API để hỗ trợ nhiều tính năng mới khác nhau. Chi tiết của mỗi phiên bản được quyết định bởi sự đồng thuận giữa các thành viên của Nhóm, 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.
Ngoài các tính năng được yêu cầu bởi API lõi, các nhà cung cấp bộ xử lý đồ họa (GPU) có thể cung cấp thêm chức năng ở dạng tiện ích mở rộng. Các tiện ích mở rộng có thể giới thiệu các chức năng mới và hằng số mới, đồng thời có thể nới lỏng hoặc 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 tiện ích mở rộng để hiển thị các API tùy chỉnh mà không cần sự hỗ trợ từ các nhà cung cấp khác hoặc toàn bộ Nhóm Khronos, điều này làm tăng đáng kể tính linh hoạt của OpenGL. Tất cả các tiện ích mở rộng được thu thập và được xác định bởi OpenGL Registry.
Mỗi tiện ích mở rộng được liên kết với một số nhận dạng ngắn, dựa trên tên của công ty đã phát triển nó. Ví dụ: định danh của Nvidia là NV, là một phần của tên mở rộng GL_NV_half_float, hằng số GL_HALF_FLOAT_NV và hàm glVertex2hNV. Nếu nhiều nhà cung cấp đồng ý triển khai cùng một chức năng bằng cách sử dụng cùng một API, thì một tiện ích mở rộng dùng chung có thể được phát hành, sử dụng số nhận dạng EXT. Trong những trường hợp như vậy, cũng có thể xảy ra trường hợp Ban Đánh giá Kiến trúc của Khronos Group chấp thuận rõ ràng cho phần mở rộng, trong trường hợp đó ARB định danh được sử dụng.
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 hình thành 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, đặc biệt là các tiện ích mở rộng thuộc loại ARB hoặc EXT.
OpenGL được thiết kế nhằm thỏa mãn mục đích chính sau:
- Che giấu sự tương tác phức tạp với các bộ máy xúc tiến 3 chiều bằng cách đưa ra một giao diện lập trình thống nhất.
- Che giấu các sự khác biệt giữa các phần cứng 3 chiều bằng cách bắt buộc các phần cứng tương thích OpenGL phải hỗ trợ tất cả các chức năng của giao diện OpenGL. Nếu cần, các chức năng chưa được hỗ trợ đầy đủ bởi phần cứng có thể được hỗ trợ bằng phần mềm.
Các thao tác OpenGL cơ bản là nhận các nguyên hàm hình học như điểm, đường thẳng và đa giác rồi chuyển thành các điểm đồ họa (pixel) trên màn hình. Điều này được thực hiện bởi luồng ống dẫn đồ họa (graphics pipeline). Nó còn được gọi là bộ máy trạng thái OpenGL. Đa số các lệnh OpenGL được dùng để tạo ra các hình học cơ bản đã gặp ở trên hoặc là quy định cách chuyển đổi hình học trong bộ máy trạng thái OpenGL.
Trước khi OpenGL 2.0 ra đời, mỗi giai đoạn trong luồng ống dẫn đồ họa thi hành một nhiệm vụ nhất định, khó có thể thay đổi được. Từ phiên bản OpenGL 2.0, một số giai đoạn đó có thể sửa đổi bằng cách dùng ngôn ngữ chuyển màu GLSL.
Hình ảnh
Image:JOGL Refrection Demo Screenshot.png|Khúc xạ dùng OpenGL
Image:Perl OpenGL fob2.jpg|Kết cấu di động dùng OpenGL
Image:Synth_video_game_screenshot_C.png|Trò chơi dùng OpenGL
👁️
3 | 🔗 | 💖 | ✨ | 🌍 | ⌚
**OpenGL** (**Open Graphics Library**) là một API đa nền tảng, đa ngôn ngữ cho kết xuất đồ họa vector 2D và 3D. API thường được sử dụng để tương tác với bộ xử lý đồ
Sản phẩm Hãng sản xuất Gigabyte Engine đồ họa GV-N730D5-2GL GeForce GT 730 Chuẩn Bus PCI-E 2.0 Bộ nhớ 2048 MBGDDR5 Core Clock 902 MHz Lõi CUDA 2432 Clock bộ nhớ 5000 MHz Giao diện
Chipset NVIDIA GeForce GT 730 IO Dual-link DVI-D x 1 HDMI 1.4a x 1 D-Sub x 1 Core Clock 902 MHz Memory Clock 1600 MHz Memory Size 2048 MB Memory Type DDR3 Memory Bus 64
**Quadro** là một thương hiệu card đồ họa của Nvidia nhắm đến các workstation chạy computer-aided design (CAD), mô phỏng hình ảnh (CGI),ứng dụng tạo nội dung số (DCC), tính toán khoa học và máy
**Vulkan** là một API đa nền tảng, phí tổn thấp, tiêu chuẩn mở cho đồ hoạ 3D và điện toán. Ban đầu Vulkan được AMD phát triển với tên gọi Mantle, nhưng sau đó được
Dòng **vi xử lý đồ họa Adreno** được phát triển bởi Qualcomm dưới dạng tích hợp trong chip xử lý SoCs. Ban đầu dòng này được đặt tên là _Imageon_ do ATI Technologies phát triển,
Bảng sau mô tả thông tin cơ bản về GPU của NVIDIA. Bộ xử lý đồ họa này là bộ não của các loại card đồ họa dựa trên nền tảng NVIDIA. ## Các phiên
Bảng sau mô tả thông tin cơ bản về GPU của ATi. Bộ xử lý đồ họa này là bộ não của các loại card đồ họa dựa trên nền tảng ATi ## Các phiên
**Krita** là một phần mềm chỉnh sửa đồ họa miễn phí và mã nguồn mở được viết bằng Qt và được thiết kế chủ yếu cho mục đích vẽ tranh kỹ thuật số
**Clang** là một front-end trình biên dịch (_compiler front end_) cho các ngôn ngữ lập trình C, C ++, Objective-C , cũng như khung OpenMP, OpenCL, RenderScript và CUDA. Nó sử dụng cơ sở
**KDE Plasma 5** là thế hệ thứ năm và hiện tại của môi trường không gian làm việc đồ họa được tạo bởi KDE chủ yếu cho các hệ thống Linux. KDE Plasma 5 là
nhỏ|Linux API, Linux ABI, API và ABI trong nhân **Nhân Linux** cung cấp một số giao diện cho các ứng dụng ở không gian người dùng sử dụng cho các mục đích khác nhau và
**Intel Graphics Technology** (**GT**) là tên chung của một loạt bộ xử lý đồ họa tích hợp (IGPs) sản xuất bởi Intel được sản xuất trên cùng một package hoặc die cùng với bộ xử
phải|nhỏ| Một mô hình hiện đại của mô hình ấm trà Utah **Ấm trà Utah**, hay **ấm trà Newell**, là một mô hình thử nghiệm 3D đã trở thành một đối tượng tham chiếu tiêu
**Bảng mạch đồ họa**, **Bộ chuyển đổi đồ hoạ** (_graphics adapter_), **thẻ đồ họa, card đồ họa (graphics card)**, **thẻ màn hình**, **card màn hình** là một bảng mạch mở rộng (expansion card) dùng để
**Apple Inc.** là một tập đoàn công nghệ đa quốc gia của Hoa Kỳ chuyên về thiết kế và phát triển các thiết bị điện tử tiêu dùng, phần mềm máy tính cùng dịch vụ
**Freedesktop.org** (fd.o) là một dự án làm việc trên các cơ sở khả năng tương tác và chia sẻ công nghệ cho các phần mềm môi trường desktop miễn phí cho hệ thống X Window
**_Europa Universalis IV_** (thường gọi là EUIV hay EU4) là một trò chơi máy tính thuộc thể loại chiến lược thời gian thực trong series game _Europa Universalis_, do Paradox Development Studio phát triển và
**GeForce** là một thương hiệu của các đơn vị xử lý đồ họa (GPU) được thiết kế bởi NVIDIA. Kể từ loạt GeForce 30, đã có mười bảy lần lặp lại thiết kế. Các sản
thumb|GeForce 6600GT (NV43) nhỏ|Các bộ phận của một GPU **Bộ phận xử lý đồ họa** (**GPU**, **graphics processing unit**) là một vi mạch chuyên dụng được thiết kế để thao tác và truy cập bộ
**Unity** là một game engine đa nền tảng được phát triển bởi Unity Technologies, mà chủ yếu để phát triển video game cho máy tính, consoles và điện thoại. Lần đầu tiên nó được công
**Mutter** là một trình quản lý của sổ ban đầu được thiết kế và triển khai cho hệ thống X Window, và gần đây đã phát triển để trở thành một trình biên soạn Wayland.
**Unity** là một là một môi trường desktop phân nhánh từ GNOME được phát triển bởi Canonical Ltd. cho hệ điều hành Ubuntu. Unity ra mắt trong phiên bản netbook edition của Ubuntu 10.10. Ban
nhỏ|ReactOS 0.4.7 Desktop **ReactOS** là một hệ điều hành mã nguồn mở cho các máy tính cá nhân x86/x64 với mục đích tương thích nhị phân với các chương trình máy tính và driver được
**Haiku** là một hệ điều hành mã nguồn mở tương thích với BeOS đã ngừng phát triển. Bắt đầu phát triển năm 2001 và hệ điều hành trở nên tự lưu trữ trong năm 2008.
nhỏ|18 wheels of steel **_18 Wheels of Steel_** là dòng game mô phỏng vận tải đường bộ do hãng SCS Software phát triển và được ValuSoft phát hành từ năm 2002 đến năm 2011, như
thumb|**Simple DirectMedia Layer** **Simple DirectMedia Layer** (thường được viết tắt là SDL) là một thư viện lập trình có khả năng trừu tượng hóa các phần cứng đồ họa, âm thanh hay thiết bị vào
**Unix** (; được đăng ký nhãn hiệu là **UNIX**) là một họ hệ điều hành máy tính đa nhiệm, đa người dùng được viết vào những năm 1960 và 1970 do một số nhân viên
nhỏ|phải|Trải nghiệm công nghệ thực tế ảo tại Hà Nội, Việt Nam **Thực tế ảo** ( - _VR_) là một trải nghiệm mô phỏng có thể giống hoặc khác hoàn toàn với thế giới thực.
[[KDE 3.5]] [[GNOME 2.12.0]] Trong khoa học máy tính, **Hệ thống X Window** (còn được gọi tắt là **X11** hay **X**) là một windowing system dùng để hiển thị đồ họa bitmap. Nó cung ứng
**NEStimulator** là một trình giả lập NES viết bởi các lập trình viên trò chơi Gustavo Restrepo và Igor Todorovski của Overmind Games. Phiên bản hiện tại là 0.2. ## Chức năng * Trình dò
nhỏ|The red W910i, shown in collapsed and extended mode Chiếc điện thoại **Sony Ericsson W910i** là một chiếc điện thoại nghe nhạc dáng trượt. W910i được ra mắt vào ngày 14 tháng 6 năm 2007,
**Wine** là một lớp tương thích tự do nguồn mở dùng để chạy các phần mềm viết cho Windows trên các hệ điều hành tương tự Unix (Linux, FreeBSD,...). Wine cũng cung cấp một thư
nhỏ|GNU Debugger Trình gỡ lỗi GNU (GNU Debugger) hay còn gọi là GDB là một chương trình gỡ lỗi chuẩn cho hệ thống phần mềm GDB. Nó là một trình gỡ lỗi di động có
**Kerkythea** là một hệ thống kết xuất đồ họa thương mại hỗ trợ phương pháp dò tia. Hiện nay, nó có khả năng tích hợp với Autodesk 3ds Max, Blender, SketchUp, Silo và Wings3D (nhìn
Một **game engine** (**phần mềm làm game**) là một phần mềm được viết để thiết kế và phát triển video game (trò chơi điện tử), hiểu đơn giản nó là loại phần mềm trung gian
Trong đồ họa máy tính, **dò tia** là kỹ thuật tạo ra một hình ảnh bằng cách dò đường đi của ánh sáng thông qua các điểm ảnh trên một mặt phẳng ảnh và mô
**Android** là một hệ điều hành dựa trên nền tảng Linux được thiết kế dành cho các thiết bị di động có màn hình cảm ứng như điện thoại thông minh và máy tính bảng.
**Mozilla Firefox 4** là phiên bản mới nhất của trình duyệt web Mozilla Firefox, phát hành vào ngày 22 tháng 3 năm 2011. Phiên bản beta đầu tiên đã được phổ biến vào ngày 6
**Praetorians** (tạm dịch: _Vệ binh hoàng gia_) là trò chơi máy tính chiến thuật thời gian thực do hãng Pyro Studios phát triển và Eidos Interactive phát hành vào ngày 28 tháng 2 năm 2003
**Nokia N8** là mẫu điện thoại thông minh (smartphone) của Nokia thuộc dòng Nseries. Nó là điện thoại quay phim đầu tiên của Nokia dùng một cỡ cảm biến 1/1.83" trên máy quay 12 Megapixel,
**_Arena Wars_** (tạm dịch: _Vũ đài Chiến tranh_) là trò chơi máy tính thuộc thể loại hành động kiêm chiến lược thời gian thực lấy bối cảnh nhân loại lao vào một cuộc chiến tranh
**Samsung GT-i8510** (còn được gọi là **i8510** hoặc **INNOV8**) là điện thoại thông minh sản xuất bởi Samsung. Chức năng của i8510 bao gồm một số của máy ảnh và máy nghe nhạc di động.
**PowerVR** là một bộ phận của hãng Imagination Technologies (trước đây là VideoLogic) chuyên phát triển các giải pháp phần mềm và phần cứng cho kết xuất 2D, 3D, giải mã video, xử lý ảnh
**_Freedom Fighters_** là tựa game bắn súng góc nhìn người thứ ba dành cho hệ máy PlayStation 2, GameCube, Xbox và Microsoft Windows. Trò chơi do hãng IO Interactive phát triển và Electronic Arts phát
**Windows NT 4.0** là một hệ điều hành trong họ hệ điều hành Windows NT của Microsoft. Nó được phát hành để sản xuất vào ngày 31 tháng 7 năm 1996, và là hệ điều
nhỏ|Hackday với [[Jolla, Mer và Nemo Mobile tháng 8/2012]] **Sailfish OS** (cũng được viết là **SailfishOS** Hệ điều hành được phát hành cùng với máy tính bảng và smartphone Jolla (dừng bán năm 2016 nhưng
nhỏ|Một applet Java được tạo ra như một tài liệu trình diễn bổ sung cho một ấn phẩm khoa học nhỏ|Một Java applet sử dụng tăng tốc phần cứng 3D để trực quan hóa các
**Android 7.0 "Nougat"** ( tên mã phát triển là **Android N**) là một phiên bản phát hành của hệ điều hành Android. Lần đầu được phát hành dưới dạng một bản dựng beta vào ngày 9
**Stellarium** là một phần mềm mô phỏng vũ trụ tự do nguồn mở phát hành theo Giấy phép Công cộng GNU phiên bản 2, có sẵn cho Linux, Windows và MacOS. Một phiên bản Stellarium