Fitur yang hilang dari WebGL dan OpenGL ES

10

Saya sudah mulai menggunakan WebGL dan senang dengan betapa mudahnya memanfaatkan pengalaman OpenGL saya (dan dengan ekstensi OpenGL ES). Namun, pemahaman saya adalah sebagai berikut:

  • OpenGL ES adalah bagian dari OpenGL
  • WebGL adalah bagian dari OpenGL ES

Apakah ini benar untuk kedua kasus? Jika demikian, apakah ada sumber daya untuk merinci fitur yang hilang?

Misalnya, satu fitur yang hilang adalah glPushMatrixdan glPopMatrix. Saya tidak melihat mereka di WebGL, tetapi dalam pencarian saya, saya tidak dapat menemukan mereka dirujuk dalam materi OpenGL ES baik.

Chris Smith
sumber

Jawaban:

9

The WebGL wiki yang terkandung bagian dalam hirarki FAQ untuk " Perbedaan WebGL dan OpenGL " yang tampaknya fokus pada perbedaan WebGL dari "desktop" OpenGL implementasi dan, sayangnya, tidak sangat rinci (sebagian besar itu tentang perilaku, tidak API) .

Jika itu tidak cukup detail untuk Anda, Anda mungkin perlu membandingkan draft WebGL terbaru dengan spesifikasi OpenGL ES atau OpenGL secara manual.


sumber
9

Sudahkah Anda memeriksa konsep WebGL terbaru?

Menurut rancangan jika ada kontradiksi, spesifikasi OpenGL ES 2.0 adalah otoritas final.

Bab 6 menguraikan perbedaan dari OpenGL ES 2.0 ke WebGL.

http://www.khronos.org/registry/webgl/specs/latest/

Tadeu Maia
sumber
Anda memiliki jawaban yang baik, yang saya undian, tetapi menerima jawaban yang lain karena itu menunjukkan sumber daya lain untuk memeriksa. Terima kasih atas bantuan Anda.
Chris Smith
0

Salah satu cara untuk melihatnya adalah WebGL adalah OpenGL ES 2.0 dan OpenGL ES 2.0 adalah OpenGL dengan semua legacy cruft dihapus.

Sejak shader ditambahkan semua warisan pipa fungsi tetap glPushMatrix, glLight, glVertexdll semua tidak masuk akal untuk menjaga sekitar.

Jadi, apakah fitur "hilang" atau fitur "usang" yang benar dan benar?

Fitur spesifik apa yang Anda cari?

WebGL / OpenGL ES 2.0 adalah vertex dasar dan fragmen shader. Ada dukungan terbatas untuk tekstur non-power-of-2 dan hanya beberapa format tekstur (tidak terlalu banyak batas adalah 99% dari semua tekstur adalah RGB8 atau RGBA8). Dukungan untuk tekstur titik apung adalah opsional tetapi sebagian besar perangkat mendukungnya. Dukungan untuk rendering ke tekstur floating point lebih jarang. Sedikit jika ada perangkat seluler yang mendukung render ke tekstur titik mengambang.

WebGL2 (baru dikirim) dan OpenGL ES 3.0 menambahkan satu ton format tekstur baru termasuk tekstur berbasis integer dan tekstur 3D. Ini menghapus batas tekstur non-power-of-2. Itu menambahkan mengubah umpan balik (kemampuan untuk shader vertex untuk menulis ke buffer). Itu juga menambahkan permintaan oklusi. Objek Array Vertex adalah standar (mereka opsional di WebGL / ES 3.0). Ada banyak fitur kecil lainnya.

ES 3.1 (dan mungkin versi WebGL berikutnya) menambahkan compute shaders (kemampuan untuk shader fragmen untuk melakukan akses tulis acak). Shader fragmen hanya bisa menulis ke fragmen / piksel yang diminta darinya saat ini sedangkan menghitung shader dan menulis di mana saja mereka inginkan.

Fitur apa lagi yang ingin Anda gunakan?

gman
sumber