Sự khác biệt giữa OpenGL ES và OpenGL là gì?


Câu trả lời:


13

OpenGL ES (Hệ thống nhúng) là phiên bản rút gọn của OpenGL. Có rất nhiều sự khác biệt giữa hai điều đó và nếu bạn muốn đi sâu vào chi tiết, thì bạn có thể đọc bài viết đặc tả 128 này. Nhưng ES là một tập hợp con của OpenGL nên tất cả các ứng dụng ES hoạt động trên các hệ thống không phải ES nhưng không phải ngược lại.

Không có nơi nào bạn có thể dễ dàng xác định cái gì trong ES và cái gì không. Ngay cả một định nghĩa là "OpenGL-ES cũng giống như OpenGL, nhưng không có nhiều thứ. Ví dụ, không có glBegin hoặc glEnd."


5
ES không phải là tập hợp con trực tiếp của OpenGL, do đó, bạn cho rằng tất cả các ứng dụng ES hoạt động trên các hệ thống không phải ES là không đúng.
Jari Komppa

5
@JariKomppa - Đó là phiên bản OpenGL 4.1.
DMan

Một bản tóm tắt tốt đẹp về những thay đổi / khác biệt sẽ là tốt đẹp.
bobobobo

19

Than ôi, không phải là một trong những câu trả lời cho đến nay là đầy đủ và hoàn toàn chính xác. Thực sự, OpenGL-ES thực hiện hai điều OpenGL không:

1) nó loại bỏ và sau đó mở rộng API OpenGL để làm cho nó phù hợp với nền tảng di động. Đó là, trước tiên, họ loại bỏ API và các tính năng bạn thực sự không cần, và gây gánh nặng cho việc triển khai trên thiết bị di động, chẳng hạn như hiển thị đa giác hoặc sử dụng danh sách hiển thị. Sau đó, nó làm cho một vài tiện ích mở rộng hợp lý để làm cho nó hữu ích hơn cho nền tảng di động. Tôi thậm chí không thể nhớ một ví dụ về điều này, mặc dù.

2) nó cung cấp giao diện cho trình quản lý cửa sổ (và do đó là phần cứng đồ họa gốc) của nền tảng di động. Phần này của OpenGL-ES, được gọi là EGL, rất giống với GLUT trên máy tính để bàn. Ngoại trừ việc nó không có phương thức tiện lợi nào không thực sự cần thiết cho giao diện đó. Vì vậy, không có API để vẽ các khối đa diện hoặc hình cầu (như trong GLUT). Nhưng, ví dụ, có các API tương ứng với các cuộc gọi lại của GLUT init () và với các cuộc gọi lại DisplayFunc () và ReshapeFunc ().


2
EGL không phải là một phần của OpenGL ES. Đó là điều riêng biệt. Xem thông số kỹ thuật. Nó không phải là một phần bắt buộc của OpenGL ES và hầu như không được đề cập ngoại trừ việc nói rằng nó có thể tồn tại trên hệ thống của bạn nhưng nếu không thì việc thiết lập một cửa sổ, v.v ... nằm ngoài phạm vi của thông số OpenGL ES
gman

7

Có hai phiên bản OpenGL ES có sẵn trên Android:

  • OpenGL ES 1.x (1.0 hoặc 1.1): tập hợp con của OpenGL 1.5 mà không cần lệnh ngay lập tức
    • không có glBegin / glEnd
    • không hỗ trợ Quad hoặc Polygon
  • OpenGL ES 2.0: một tập hợp con của OpenGL 3.X không có đường ống cố định
    • đỉnh shader
    • mảnh vỡ
    • shader hình học không có sẵn

Cảnh báo, OpenGL ES 2.0 không tương thích với OpenGL ES 1.X!

Hầu như tất cả các điện thoại Android đều có GPU OpenGL 1.X và hầu hết đều có 2.0. OpenGL ES 2.0 chỉ khả dụng với Android 2.x trở lên.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.