OpenGL ES so với OpenGL


91

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


13
Bạn đang so sánh phiên bản OpenGL và OpenGL ES nào?
Firas Assaad

3
Nếu bạn sử dụng bất kỳ công cụ GL2 nào, hãy luôn căn cứ vào GLES2. Có nhiều cách khác nhau để thực hiện mọi việc trong GL2, nhưng một cách trong GLES2 đối với hầu hết các phần. Ngoài ra, bạn sẽ không gặp phải vấn đề khi chuyển nội dung theo cách đó.
zezba9000

có thể trùng lặp của OpenGL hoặc OpenGL ES
Enamul Hassan

Câu trả lời:


54

Hai trong số những khác biệt đáng kể hơn giữa OpenGL ES và OpenGL là việc loại bỏ ngữ nghĩa gọi glBegin ... glEnd để kết xuất nguyên thủy (có lợi cho mảng đỉnh) và giới thiệu các kiểu dữ liệu điểm cố định cho tọa độ đỉnh và thuộc tính để hỗ trợ tốt hơn khả năng tính toán của các bộ xử lý nhúng, thường thiếu FPU

Hãy xem ở đây: OpenGL_ES


19
Chúng cũng bị xóa khỏi các phiên bản gần đây của OpenGL máy tính để bàn / máy trạm.
Ben Voigt

2
Một so sánh thú vị là giữa OGL 3 và GLES 2. Trong chế độ tức thì OGL 3 không được dùng nữa (mặc dù vẫn được hỗ trợ). Nhiều (mặc dù không phải tất cả) các chức năng trong OGL 3 có sẵn trong GLES 2.
nullspace

49

OpenGL ES là api opengl cho các hệ thống nhúng. Nó đơn giản hơn opengl bình thường về số lượng các hàm api, nhưng có thể khó sử dụng hơn, vì bạn sẽ phải sử dụng bộ đệm đỉnh và viết nhiều bộ đổ bóng hơn.

Khi bạn sử dụng opengl bình thường, bạn có thể sử dụng glBegin và glEnd để bao gồm các nguyên mẫu hình học mà bạn cần vẽ, nhưng khi sử dụng Opengl ES, bạn sẽ phải sử dụng bộ đệm đỉnh. Tôi đoán điều này là vì mối quan tâm về hiệu suất.

Hiện tại, có hai phiên bản Opengl ES, phiên bản 1.1 chỉ có thể hỗ trợ đường ống kết xuất cố định, trong khi phiên bản 2.0 hỗ trợ glsl shader. Tuy nhiên nó không có đường ống kết xuất cố định. Nói cách khác, bạn sẽ phải viết bộ đổ bóng của riêng mình cho mọi thứ.

Opengl ES chủ yếu được sử dụng trên điện thoại di động và web (webgl). Theo thông số kỹ thuật, trình điều khiển opengl dành cho máy tính để bàn của bạn có thể hỗ trợ tất cả các opengl es apis.


3
Bạn không cần phải sử dụng bộ đệm đỉnh, tôi không nghĩ vậy. Bạn cũng có thể sử dụng mảng đỉnh ở chế độ tức thì. Liệu tôi có sai?
Gravity

Vâng, bạn không cần phải sử dụng bộ đệm đỉnh
Stanislav Ageev

2
"Khi bạn sử dụng opengl thông thường, bạn có thể sử dụng glBegin và glEnd để bao gồm các nguyên mẫu hình học mà bạn cần vẽ", không phải nếu bạn muốn mã của mình tương thích về phía trước và cũng không phải nếu bạn đang sử dụng máy Mac, mà tôi am;)
Jerfov2

38

Cũng giống như nói thêm rằng OpenGL 3.3 và OpenGL ES 2.0 chủ yếu có thể tương tác với nhau, bằng cách sử dụng một tập hợp con các tính năng của OpenGL 3.3. Công cụ C ++ tùy chỉnh của tôi sử dụng các lệnh gọi API giống nhau, với một vài định nghĩa, cho Android / IOS / Windows / OSX / Linux.

Trong số những điểm khác biệt chính là:

  • thiếu hỗ trợ đổ bóng hình học
  • không pha trộn tối thiểu / tối đa (có thể có một phần mở rộng cho điều này)
  • không có Quad List nguyên thủy
  • các định dạng kết cấu hạn chế hơn (đặc biệt liên quan đến dấu chấm động)
  • glGetTexImage không khả dụng
  • không có Phản hồi chuyển đổi, tương tự đối với một số tính năng nâng cao khác

Ngoài ra còn có nhiều điểm khác biệt khác, nhưng điều đó bao gồm một số điểm khác biệt quan trọng.


7
Tôi nghĩ chúng ta có thể từ từ chỉnh sửa bài đăng này để bao gồm tất cả các lệnh gọi hàm còn thiếu. Và các phiên bản để so sánh vẫn nên được 3.3 và ES 2.0 kể từ khi họ đã được phát hành trong cùng một năm
CoffeDeveloper

8

OpenGL ES có nghĩa là Thư viện đồ họa mở cho các hệ thống nhúng (OpenGL ES hoặc GLES) là một tập con của giao diện lập trình ứng dụng kết xuất đồ họa máy tính OpenGL (API) để kết xuất đồ họa máy tính 2D và 3D, chẳng hạn như đồ họa được sử dụng bởi trò chơi điện tử, thường được tăng tốc phần cứng bằng cách sử dụng một đơn vị xử lý đồ họa (GPU). Nó được thiết kế cho các hệ thống nhúng như điện thoại thông minh, máy tính bảng, bảng điều khiển trò chơi điện tử và PDA.

Trang web chính thức của OpenGL | ES: http://www.opengl.org/

bạn cũng có thể lấy thêm thông tin từ wiki: http://en.wikipedia.org/wiki/OpenGL_ES


6

Xem lại tổng quan về OpenGL ES tại đây: http://www.khronos.org/opengles/

Tóm lại, ES là một tập con của Open GL cho "hệ thống nhúng". Sự khác biệt cụ thể sẽ phụ thuộc vào các phiên bản và bộ tính năng bạn đang so sánh.



4

Tôi nghĩ rằng bạn sẽ nhận được câu trả lời tốt hơn nếu bạn hỏi "sự khác biệt giữa OpenGL và OpenGL ES".

Có sự khác biệt sâu sắc giữa OpenGL ES 1.1 và ES 2.0, OpenGL 1.5 và 2.0, và OpenGL 3.0 và 4.0.

Như những người khác đã mô tả ES được viết cho các hệ thống nhúng. Nó cũng đại diện cho việc "dọn dẹp nhà cửa" đầu tiên của đặc điểm kỹ thuật GL kể từ khi ra đời. OpenGL có một) nhiều cách để làm điều tương tự (ví dụ: bạn có thể vẽ quad / direct theo hai cách khác nhau và blit hình ảnh pixel theo hai cách khác nhau, v.v.). ES đơn giản hơn OpenGL với ít tính năng hơn như một tuyên bố chung vì nó được thiết kế cho phần cứng kém phức tạp hơn.

Tôi mong bạn không nên nhìn OpenGL ES 1.1 vì nó là quá khứ và không đại diện cho cách OpenGL hoặc OpenGL ES đang phát triển về mặt kiến ​​trúc trong tương lai.


4

Thuật ngữ và các phiên bản khá khó hiểu (đặc biệt là đối với người mới). Để có cái nhìn tổng thể hơn về OpenGL và OpenGL-ES (GLES), hãy xem OpenGL - Then and Now .


1
Liên kết cũng chứa một hướng dẫn tuyệt vời với các ví dụ, giải thích rõ ràng cách hoạt động của đường dẫn kết xuất OpenGL.
JustWe

Đây là liên kết cho hướng dẫn.
ap-osd,

3

Sự khác biệt chính giữa cả hai là OpenGL ES được tạo ra cho các hệ thống nhúng như điện thoại thông minh, trong khi OpenGL là một trên máy tính để bàn. Ở cấp độ mã hóa, OpenGL ES không hỗ trợ các chức năng cố định như glBegin / glEnd, v.v. OpenGL có thể hỗ trợ đường ống chức năng cố định (sử dụng cấu hình tương thích).


2

Câu trả lời hiện đại, cho ES 3.0 so với OpenGL 4.6, khác nhiều so với câu trả lời được chấp nhận. Bây giờ, tất cả những thứ trong đường ống cố định đã biến mất.

ES, dành cho HỆ THỐNG KẾT NỐI, kém mạnh mẽ hơn nhiều.


1

OpenGL ES chỉ đơn giản là api OpenGL cho các hệ thống nhúng (OpenGL ES đề cập đến Hệ thống nhúng OpenGL). vì vậy nó là một tập hợp con của OpenGL và được sử dụng rộng rãi trong điện thoại di động và một số hệ thống VR, nó được thiết kế cho phần cứng kém phức tạp hơn. OpenGL ES có ít thuật ngữ và chức năng hơn OpenGL, hãy nghĩ về nó như: bạn chỉ lấy những gì bạn cần cho hệ thống đó bởi vì nếu chúng tôi không cần một chức năng trong toàn bộ công việc của mình hoặc phần cứng không thể xử lý nó, vì vậy không có nghĩa là thêm chức năng đó nhưng điều này làm cho việc sử dụng API này khó khăn hơn do cần phải viết nhiều Shader hơn và các mã phức tạp để tạo ra một cái gì đó đơn giản vì OpenGL ES không cung cấp Shader trong đường ống đồ họa như OpenGL. phiên bản cuối cùng của OpenGL ES là 3.2, nó hiện có thể cung cấp hỗ trợ Tessellation cho các chi tiết hình học bổ sung, bộ đổ bóng hình học mới. vì vậy tôi khuyên bạn nên bắt đầu học hoặc sử dụng OpenGL ES 3.0+ (trong trường hợp nó là ngôn ngữ đích của bạn) bởi vì bây giờ và thế hệ tiếp theo sẽ không sử dụng các phiên bản cũ với phần cứng và card đồ họa mạnh hơn và nếu mục tiêu của bạn là OpenGL, hãy bắt đầu với v3. 3+ hoặc 4.0+. Nếu bạn có nhiều thời gian hơn, không vấn đề gì hãy xem nhanh các phiên bản cũ để hiểu thêm về cách mọi thứ được phát triển và tại sao. bạn có thể kiểm tra liên kết này để biết thêm chi tiết:https://en.wikipedia.org/wiki/OpenGL_ES


0

nói một cách đơn giản, opengl là phiên bản dành cho máy tính để bàn và opengl es dành cho các hệ thống nhúng như điện thoại di động, nơi có các hạn chế về bộ nhớ và hiệu suất nhiều hơn so với máy tính. opengl es sẽ khó sử dụng hơn.


0

OpenGL là API đồ họa 2D và 3D mang đến hàng nghìn ứng dụng cho nhiều nền tảng máy tính khác nhau.

OpenGL ES là tập con được xác định rõ ràng của OpenGL trên máy tính để bàn.

OpenGL® ES là một API đa nền tảng, miễn phí bản quyền cho đồ họa 2D và 3D đầy đủ chức năng trên các hệ thống nhúng - bao gồm bảng điều khiển, điện thoại, thiết bị và xe cộ. Nó bao gồm các tập con được xác định rõ ràng của OpenGL trên máy tính để bàn, ...

Xem liên kết này .

PS

WebGL chia sẻ đặc tả với OpenGL ES, tức là nếu bạn đã học OpenGL trên máy tính để bàn, thì việc học những cái khác (OpenGL ES, WebGL) rất đơn giả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.