Apa perbedaan antara OpenGL ES dan OpenGL?

Jawaban:

13

OpenGL ES (Embedded Systems) adalah versi OpenGL yang dipreteli. Ada banyak perbedaan antara keduanya dan jika Anda ingin masuk ke rincian, maka Anda dapat membaca kertas spesifikasi 128 ini. Tetapi ES adalah bagian dari OpenGL sehingga semua aplikasi ES bekerja pada sistem non ES tetapi tidak sebaliknya.

Tidak ada satu tempat di mana Anda dapat dengan mudah menentukan apa yang ada dalam ES dan apa yang tidak. Bahkan satu definisi adalah "OpenGL-ES seperti OpenGL, tetapi tanpa banyak hal. Misalnya, tidak ada glBegin atau glEnd."

Ólafur Waage
sumber
5
ES bukanlah subset langsung dari OpenGL, jadi klaim Anda bahwa semua aplikasi ES bekerja pada sistem non ES tidak benar.
Jari Komppa
5
@JariKomppa - Mulai dari OpenGL 4.1.
DMan
Ringkasan perubahan / perbedaan yang bagus akan menyenangkan.
bobobobo
19

Sayangnya, tidak satu pun jawaban sejauh ini yang lengkap dan sepenuhnya benar. Sungguh, OpenGL-ES melakukan dua hal yang tidak OpenGL:

1) menghapus dan kemudian memperluas OpenGL API untuk membuatnya cocok untuk platform seluler. Artinya, pertama-tama mereka menghapus API dan fitur yang benar-benar tidak Anda butuhkan, dan memberatkan untuk implementasi seluler, seperti merender poligon atau menggunakan daftar tampilan. Kemudian itu membuat beberapa ekstensi yang bijaksana untuk membuatnya lebih bermanfaat untuk platform seluler. Saya bahkan tidak ingat contoh ini.

2) ia menyediakan antarmuka ke manajer jendela (dan karenanya perangkat keras grafis asli) dari platform seluler. Bagian OpenGL-ES ini, dikenal sebagai EGL, sangat mirip dengan GLUT pada desktop. Kecuali bahwa ia tidak memiliki metode kenyamanan yang tidak sepenuhnya diperlukan untuk antarmuka itu. Jadi tidak ada API untuk menggambar polyhedra atau bola (seperti di GLUT). Tetapi ada, misalnya, API yang terkait dengan init (), dan untuk displayFunc () dan panggilan balik ReshapeFunc () GLUT.

pengguna1800
sumber
2
EGL bukan bagian dari OpenGL ES. Ini hal yang terpisah. Lihat speknya. Ini bukan bagian yang diperlukan dari OpenGL ES dan hampir tidak disebutkan kecuali untuk mengatakan bahwa itu mungkin ada pada sistem Anda tetapi jika tidak menyiapkan jendela dll berada di luar ruang lingkup spesifikasi OpenGL ES
gman
7

Ada dua versi OpenGL ES yang tersedia di Android:

  • OpenGL ES 1.x (1.0 atau 1.1): bagian dari OpenGL 1.5 tanpa perintah langsung
    • tidak ada glBegin / glEnd
    • tidak ada dukungan Quad atau Polygon
  • OpenGL ES 2.0: subset dari OpenGL 3.X tanpa pipa tetap
    • shader vertex
    • pecahan shader
    • shader geometri tidak tersedia

Peringatan, OpenGL ES 2.0 tidak kompatibel dengan OpenGL ES 1.X!

Hampir semua ponsel Android memiliki GPU OpenGL 1.X dan sebagian besar memiliki 2.0. OpenGL ES 2.0 hanya tersedia untuk Android 2.x atau lebih baru.

Ellis
sumber