OpenGL ES versus OpenGL

92

Apa perbedaan antara OpenGL ES dan OpenGL?

kml_ckr
sumber
13
Versi OpenGL dan OpenGL ES mana yang Anda bandingkan?
Firas Assaad
3
Jika Anda menggunakan barang GL2, selalu dasarkan dari GLES2. Ada beberapa cara berbeda untuk melakukan sesuatu di GL2, tetapi satu cara di GLES2 untuk sebagian besar. Anda juga tidak akan mengalami masalah porting seperti itu.
zezba9000
kemungkinan duplikat OpenGL atau OpenGL ES
Enamul Hassan
gamedev.stackexchange.com/questions/150/…
Ciro Santilli 郝海东 冠状 病 六四 事件 法轮功

Jawaban:

55

Dua perbedaan yang lebih signifikan antara OpenGL ES dan OpenGL adalah penghapusan semantik pemanggil glBegin ... glEnd untuk rendering primitif (yang mendukung array vertex) dan pengenalan tipe data titik tetap untuk koordinat dan atribut verteks untuk dukungan yang lebih baik kemampuan komputasi prosesor yang disematkan, yang seringkali tidak memiliki FPU

Lihat di sini: OpenGL_ES

kamaci
sumber
19
Itu telah dihapus dari versi terbaru dari desktop / workstation OpenGL juga.
Ben Voigt
2
Perbandingan yang menarik adalah antara OGL 3 dan GLES 2. Dalam OGL 3 mode langsung tidak digunakan lagi (meskipun masih didukung). Banyak (meskipun tidak semua) dari fungsi di OGL 3 tersedia dalam GLES 2.
nul
50

OpenGL ES adalah api opengl untuk sistem tertanam. Ini lebih sederhana daripada opengl normal dalam hal jumlah fungsi api, tetapi mungkin lebih sulit digunakan, karena Anda harus menggunakan buffer vertex dan menulis lebih banyak shader.

Saat Anda menggunakan opengl normal, Anda dapat menggunakan glBegin dan glEnd untuk menyertakan geometri primitif yang perlu Anda gambar, tetapi saat menggunakan Opengl ES, Anda harus menggunakan buffer vertex. Saya kira ini untuk masalah kinerja.

Saat ini, terdapat dua versi Opengl ES, versi 1.1 hanya dapat mendukung pipeline rendering tetap, sedangkan versi 2.0 mendukung glsl shader. Namun itu tidak memiliki pipeline rendering tetap. Dengan kata lain, Anda harus menulis shader Anda sendiri untuk semuanya.

Opengl ES terutama digunakan pada ponsel dan web (webgl). Menurut spesifikasi, driver opengl desktop Anda dapat mendukung semua opengl es apis.

Bill Yan
sumber
3
Anda tidak harus menggunakan buffer vertex, saya rasa. Anda juga dapat menggunakan larik verteks mode langsung. Apakah aku salah?
Gravity
Ya, Anda tidak harus menggunakan buffer vertex
Stanislav Ageev
2
"Saat Anda menggunakan opengl normal, Anda dapat menggunakan glBegin dan glEnd untuk menyertakan geometri primitif yang perlu Anda gambar,", bukan jika Anda ingin kode Anda kompatibel ke depan, dan juga tidak jika Anda menggunakan Mac, yang saya am;)
Jerfov2
39

Sama seperti menambahkan bahwa OpenGL 3.3 dan OpenGL ES 2.0 sebagian besar dapat dioperasikan, dengan menggunakan subset fitur OpenGL 3.3. Mesin C ++ kustom saya menggunakan panggilan API yang sama, dengan beberapa definisi, untuk Android / IOS / Windows / OSX / Linux.

Di antara perbedaan utamanya adalah:

  • kurangnya dukungan shader geometri
  • tidak ada pencampuran min / maks (mungkin ada perpanjangan untuk ini)
  • tidak ada Quad List primitif
  • format tekstur yang lebih terbatas (terutama mengenai floating point)
  • glGetTexImage tidak tersedia
  • tidak ada Umpan Balik Transformasi, sama untuk beberapa fitur lanjutan lainnya

Ada juga banyak perbedaan lain, tetapi itu mencakup beberapa perbedaan penting.

ruang kosong
sumber
7
Saya pikir kami dapat secara perlahan mengedit posting ini untuk memasukkan semua panggilan fungsi yang hilang. Dan versi yang dibandingkan harusnya tetap 3.3 dan ES 2.0 karena dirilis pada tahun yang sama
CoffeDeveloper
8

OpenGL ES berarti Open Graphics Library for Embedded Systems (OpenGL ES atau GLES) adalah bagian dari antarmuka pemrograman aplikasi rendering grafis komputer (API) OpenGL untuk merender grafis komputer 2D dan 3D seperti yang digunakan oleh video game, biasanya dengan akselerasi perangkat keras menggunakan sebuah unit pemrosesan grafis (GPU). Ini dirancang untuk sistem tertanam seperti smartphone, tablet komputer, konsol video game dan PDA.

OpenGL | Situs Resmi ES: http://www.opengl.org/

Anda juga bisa mendapatkan informasi lebih lanjut dari wiki: http://en.wikipedia.org/wiki/OpenGL_ES

罗 大 柚
sumber
6

Tinjau ikhtisar OpenGL ES di sini: http://www.khronos.org/opengles/

Singkatnya, ES adalah bagian dari Open GL untuk "sistem tertanam". Perbedaan spesifik akan bergantung pada versi dan kumpulan fitur yang Anda bandingkan.

holtavolt
sumber
5

Registri OpenGL ES berisi perbedaan API mendetail antara OpenGL ES dan versi OpenGL yang sesuai:

Namun, tidak ada dokumen yang berisi perbedaan untuk OpenGL ES 3.0.

sakit hati
sumber
4

Saya pikir Anda akan mendapatkan jawaban yang lebih baik jika Anda bertanya "apa perbedaan antara OpenGL dan OpenGL ES".

Ada perbedaan besar antara OpenGL ES 1.1 dan ES 2.0, OpenGL 1.5 dan 2.0, serta OpenGL 3.0 dan 4.0.

Seperti yang dijelaskan orang lain, ES ditulis untuk sistem tertanam. Ini juga merupakan "pembersihan rumah" pertama dari spesifikasi GL sejak awal. OpenGL memiliki a) banyak cara untuk melakukan hal yang sama (misalnya Anda dapat menggambar segi empat / persegi dengan dua cara yang berbeda dan memadukan gambar piksel dengan dua cara yang berbeda, dll). ES lebih sederhana daripada OpenGL dengan lebih sedikit fitur sebagai pernyataan umum karena dirancang untuk perangkat keras yang kurang canggih.

Saya mendorong Anda untuk tidak melihat OpenGL ES 1.1 karena ini adalah masa lalu dan tidak mewakili cara OpenGL atau OpenGL ES bergerak secara arsitektural di masa mendatang.

pengguna501138
sumber
4

Terminologi dan versinya cukup membingungkan (terutama untuk pemula). Untuk tampilan yang lebih holistik tentang OpenGL dan OpenGL-ES (GLES), lihat OpenGL - Dulu dan Sekarang .

ap-osd
sumber
1
Tautan juga berisi tutorial bagus dengan contoh-contoh, menjelaskan dengan baik cara kerja pipeline rending OpenGL.
JustWe
Ini tautan untuk tutorialnya.
ap-osd
3

Perbedaan utama antara keduanya adalah OpenGL ES dibuat untuk sistem tertanam seperti smartphone, sedangkan OpenGL adalah yang ada di desktop. Pada tingkat pengkodean, OpenGL ES tidak mendukung fungsi fungsi tetap seperti glBegin / glEnd dll ... OpenGL dapat mendukung pipeline fungsi tetap (menggunakan profil kompatibilitas).

Matth
sumber
2

Jawaban modern, untuk ES 3.0 dibandingkan dengan OpenGL 4.6, jauh berbeda dari jawaban yang diterima. Sekarang, semua hal saluran pipa tetap hilang.

ES, untuk SISTEM TERTAMBAH, jauh lebih kuat.

Steve Wyatt
sumber
1

OpenGL ES hanyalah api OpenGL untuk sistem tertanam (OpenGL ES mengacu pada OpenGL Embedded Systems). jadi ini adalah bagian dari OpenGL dan banyak digunakan di ponsel dan beberapa sistem VR, ini dirancang untuk perangkat keras yang kurang canggih. OpenGL ES memiliki istilah dan fungsi yang lebih sedikit daripada OpenGL, anggap saja sebagai: Anda mengambil apa yang Anda butuhkan untuk sistem itu karena jika kita tidak memerlukan fungsi di seluruh pekerjaan kita atau perangkat keras tidak dapat menghadapinya, jadi tidak bermaksud menambahkan fungsi itu tetapi dalam hal ini membuat penggunaan API ini lebih sulit karena kebutuhan untuk menulis lebih banyak Shader dan kode yang rumit untuk membuat sesuatu yang sederhana karena OpenGL ES tidak menyediakan Shaders dalam pipeline grafis sebagai OpenGL. OpenGL ES versi terakhir adalah 3.2 yang sekarang dapat memberikan dukungan Tessellation untuk detail geometri tambahan, shader geometri baru. jadi saya menyarankan Anda untuk mulai belajar atau menggunakan OpenGL ES 3.0+ (jika itu bahasa target Anda) karena sekarang dan generasi berikutnya tidak akan menggunakan versi lama dengan perangkat keras dan kartu grafis yang lebih kuat dan jika target Anda adalah OpenGL, mulailah dengan v3. 3+ atau 4.0+. jika Anda memiliki lebih banyak waktu tidak masalah untuk melihat sekilas versi lama untuk lebih memahami bagaimana hal-hal dikembangkan dan mengapa. Anda dapat memeriksa tautan ini untuk lebih jelasnya:https://en.wikipedia.org/wiki/OpenGL_ES

Omar Ghannou
sumber
0

hanya mengatakan, opengl adalah versi desktop dan opengl es untuk sistem tertanam seperti ponsel di mana ada kendala memori dan kinerja lebih dari komputer. opengl es akan lebih sulit digunakan.

pratik_z
sumber
0

OpenGL adalah API grafik 2D dan 3D yang membawa ribuan aplikasi ke berbagai platform komputer.

OpenGL ES adalah himpunan bagian dari OpenGL desktop yang didefinisikan dengan baik .

OpenGL® ES adalah API lintas platform bebas royalti untuk grafik 2D dan 3D yang berfungsi penuh pada sistem tertanam - termasuk konsol, telepon, peralatan, dan kendaraan. Ini terdiri dari subset desktop OpenGL yang terdefinisi dengan baik, ...

Lihat tautan ini .

PS

WebGL berbagi spesifikasi dengan OpenGL ES, yaitu jika Anda telah mempelajari OpenGL desktop, mudah untuk mempelajari yang lain (OpenGL ES, WebGL).

Jafffy
sumber