OpenGL ES ile OpenGL karşılaştırması


92

OpenGL ES ile OpenGL arasındaki farklar nelerdir?


13
Hangi OpenGL ve OpenGL ES sürümlerini karşılaştırıyorsunuz?
Firas Assaad

3
Herhangi bir GL2 malzemesi kullanırsanız, her zaman GLES2'yi temel alın. GL2'de bir şeyler yapmanın farklı yolları vardır, ancak çoğunlukla GLES2'de bir yol vardır. Ayrıca, eşyaları bu şekilde taşırken sorunlarla karşılaşmayacaksınız.
zezba9000


Yanıtlar:


56

OpenGL ES ve OpenGL arasındaki en önemli farklardan ikisi, ilkel oluşturma için glBegin ... glEnd çağrısı semantiğinin kaldırılması (köşe dizileri lehine) ve daha iyi destek için köşe koordinatları ve öznitelikler için sabit nokta veri türlerinin tanıtılmasıdır. genellikle bir FPU'dan yoksun olan gömülü işlemcilerin hesaplama yetenekleri

Buraya bir göz atın: OpenGL_ES


19
Bunlar masaüstü / iş istasyonu OpenGL'nin son sürümlerinden de kaldırıldı.
Ben Voigt

2
İlginç bir karşılaştırma OGL 3 ve GLES 2 arasındadır. OGL 3'te acil mod kullanımdan kaldırılmıştır (yine de desteklenmektedir). OGL 3'teki işlevselliğin çoğu (hepsi olmasa da) GLES 2'de mevcuttur.
nullspace

50

OpenGL ES, gömülü sistemler için bir opengl api'sidir. Api işlevlerinin sayısı bakımından normal açıklıktan daha basittir, ancak köşe tamponları kullanmanız ve daha fazla gölgelendirici yazmanız gerekeceğinden kullanımı daha zor olabilir.

Normal bir opengl kullandığınızda, çizmeniz gereken geometri ilkellerini çevrelemek için glBegin ve glEnd kullanabilirsiniz, ancak Opengl ES kullanırken, köşe tamponlarını kullanmanız gerekecektir. Sanırım bu performans endişeleri için.

Şu anda, iki Opengl ES sürümü vardır, 1.1 sürümü yalnızca sabit işleme hattını destekleyebilirken, 2.0 sürümü glsl gölgelendiriciyi destekler. Ancak, sabit bir işleme hattı yoktur. Başka bir deyişle, her şey için kendi gölgelendiricinizi yazmanız gerekecek.

Opengl ES temel olarak cep telefonlarında ve web'de (webgl) kullanılır. Spesifikasyona göre, masaüstü opengl sürücünüz tüm açık apis'leri destekleyebilir.


3
Köşe tamponları kullanmak zorunda değilsin, sanmıyorum. Hemen mod köşe dizilerini de kullanabilirsiniz. Yanlış mıyım?
Gravity

Evet, köşe tamponları kullanmak zorunda değilsin
Stanislav Ageev

2
"Normal bir opengl kullandığınızda, çizmeniz gereken geometri ilkellerini kapatmak için glBegin ve glEnd kullanabilirsiniz." am;)
Jerfov2

40

Tıpkı OpenGL 3.3 ve OpenGL ES 2.0'ın, OpenGL 3.3'ün özelliklerinin bir alt kümesini kullanarak çoğunlukla birlikte çalışabilir olduğunu eklemek gibi. Özel C ++ motorum, Android / IOS / Windows / OSX / Linux için birkaç tanımla aynı API çağrılarını kullanıyor.

Temel farklılıklar arasında:

  • geometri gölgelendirici desteği eksikliği
  • min / maks karıştırma yok (bunun için bir uzantı olabilir)
  • Dörtlü Liste ilkeli yok
  • daha kısıtlı doku formatları (özellikle kayan nokta ile ilgili)
  • glGetTexImage kullanılamıyor
  • Diğer birkaç gelişmiş özellik için olduğu gibi, Dönüşüm Geri Bildirimi yoktur

Başka birçok farklılık da var, ancak bu önemli olanlardan birkaçını kapsıyor.


7
Tüm eksik işlev çağrılarını içerecek şekilde bu gönderiyi yavaşça düzenleyebileceğimizi düşünüyorum. Ve karşılaştırılacak sürümler, aynı yıl piyasaya
sürüldüklerinden

GLES2'deki VAO eksikliği büyük bir sorun
tuket

8

OpenGL ES, Gömülü Sistemler için Açık Grafik Kitaplığı anlamına gelir (OpenGL ES veya GLES), video oyunları tarafından kullanılanlar gibi 2D ve 3D bilgisayar grafiklerini oluşturmak için OpenGL bilgisayar grafiği oluşturma uygulama programlama arabiriminin (API) bir alt kümesidir. bir grafik işleme birimi (GPU). Akıllı telefonlar, bilgisayar tabletleri, video oyun konsolları ve PDA'lar gibi gömülü sistemler için tasarlanmıştır.

OpenGL | ES Resmi Web Sitesi: http://www.opengl.org/

wiki'den de daha fazla bilgi edinebilirsiniz: http://en.wikipedia.org/wiki/OpenGL_ES


6

OpenGL ES genel bakışını buradan inceleyin: http://www.khronos.org/opengles/

Kısaca ES, "gömülü sistemler" için Open GL'nin bir alt kümesidir. Belirli farklılıklar, karşılaştırdığınız sürümlere ve özellik gruplarına bağlı olacaktır.



4

"OpenGL ile OpenGL ES arasındaki farklar nelerdir" diye sorarsanız daha iyi bir yanıt alacağınızı düşünüyorum.

OpenGL ES 1.1 ve ES 2.0, OpenGL 1.5 ve 2.0 ve OpenGL 3.0 ve 4.0 arasında büyük farklar vardır.

Diğerlerinin tanımladığı gibi ES gömülü sistemler için yazılmıştır. Ayrıca, başlangıcından bu yana GL spesifikasyonunun ilk "ev temizliğini" temsil eder. OpenGL'nin a) aynı şeyi yapmanın birçok yolu vardı (örneğin, dörtlü / dikdörtgen şeklinde iki farklı yol çizebilir ve bir piksel görüntüsünü iki farklı şekilde engelleyebilirsiniz, vb.). ES, genel bir ifade olarak daha az özelliğe sahip OpenGL'den daha basittir çünkü daha az karmaşık donanım için tasarlanmıştır.

OpenGL ES 1.1'e geçmişte kaldığı ve gelecekte OpenGL veya OpenGL ES'nin mimari olarak hareket etme şeklini temsil etmediği için bakmamanızı tavsiye ederim.


4

Terminoloji ve sürümler oldukça kafa karıştırıcıdır (özellikle yeni başlayanlar için). OpenGL ve OpenGL-ES (GLES) hakkında daha bütünsel bir bakış için bkz. OpenGL - O Zaman ve Şimdi .


1
Bağlantı ayrıca örneklerle birlikte harika bir öğretici içerir ve OpenGL işleme hattının nasıl çalıştığını iyi açıklar.
JustWe

İşte eğiticinin bağlantısı .
ap-osd

3

İkisi arasındaki temel fark, OpenGL ES'nin akıllı telefonlar gibi gömülü sistemler için yapılmış olması, OpenGL ise masaüstlerinde olmasıdır. Kodlama düzeyinde, OpenGL ES, glBegin / glEnd vb. Gibi sabit işlevli işlevleri desteklemez ... OpenGL, sabit işlevli ardışık düzeni destekleyebilir (bir uyumluluk profili kullanarak).


2

OpenGL 4.6 ile karşılaştırıldığında ES 3.0 için modern cevap, kabul edilen cevaptan çok farklıdır. Şimdi, tüm sabit boru hattı işleri gitti.

EMBEDDED SYSTEMS için ES, çok daha az sağlamdır.


1

OpenGL ES, gömülü sistemler için basitçe OpenGL api'dir (OpenGL ES, OpenGL Gömülü Sistemler anlamına gelir). bu nedenle, OpenGL'nin bir alt kümesidir ve cep telefonlarında ve bazı VR sistemlerinde yaygın olarak kullanılır, daha az karmaşık donanımlar için tasarlanmıştır. OpenGL ES, OpenGL'den daha az terim ve işleve sahiptir, bunu şöyle düşünün: o sistem için tam da ihtiyacınız olanı alırsınız çünkü işimizin tamamında bir işleve ihtiyacımız yoksa veya donanım bununla başa çıkamazsa bu işlev, ancak bu, bir şeyi basitleştirmek için daha fazla Gölgelendirici ve karmaşık kodlar yazma ihtiyacı nedeniyle bu API'nin kullanımını zorlaştırır çünkü OpenGL ES, OpenGL olarak grafik işlem hattında Gölgelendiriciler sağlamaz. OpenGL ES'nin son sürümü 3.2'dir, artık ek geometri ayrıntıları, yeni geometri gölgelendiricileri için Mozaikleme desteği sağlayabilir. bu yüzden OpenGL ES 3.0+ (hedef diliniz olması durumunda) öğrenmeye veya kullanmaya başlamanızı tavsiye ederim çünkü şimdi ve gelecek nesil eski sürümleri daha güçlü donanım ve grafik kartlarıyla kullanmayacak ve hedefiniz OpenGL ise v3 ile başlayın. 3+ veya 4.0+. Daha fazla zamanınız varsa, işlerin nasıl ve neden geliştirildiğini daha iyi anlamak için eski sürümleri hızlıca gözden geçirme konusunda sorun yok. daha fazla ayrıntı için bu bağlantıyı kontrol edebilirsiniz:https://en.wikipedia.org/wiki/OpenGL_ES


0

basitçe söylemek gerekirse, opengl masaüstü sürümüdür ve opengl es, bilgisayarlardan daha fazla bellek ve performans kısıtlamalarının olduğu cep telefonları gibi gömülü sistemler içindir. Opengl'lerin kullanımı daha zor olurdu.


0

OpenGL , binlerce uygulamayı çok çeşitli bilgisayar platformlarına getiren 2D ve 3D grafik API'sidir.

OpenGL ES, masaüstü OpenGL'nin iyi tanımlanmış alt kümeleridir .

OpenGL® ES, konsollar, telefonlar, cihazlar ve araçlar dahil olmak üzere gömülü sistemlerdeki tam işlevli 2D ve 3D grafikler için telifsiz, çapraz platformlu bir API'dir. İyi tanımlanmış masaüstü OpenGL alt kümelerinden oluşur, ...

Bu bağlantıya bakın .

PS

WebGL, özellikleri OpenGL ES ile paylaşır, yani masaüstü OpenGL'yi öğrendiyseniz, diğerlerini (OpenGL ES, WebGL) öğrenmek kolaydır.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.