Jawaban mh01 mencakup sebagian besar dasar-dasarnya, jadi saya akan menambahkan beberapa pendukung.
OpenGL ES
Mari kita bicara tentang ES 2.0 vs. desktop GL 2.1 vs. desktop GL 3.3. Untuk tujuan diskusi ini, istilah "GL XY" akan merujuk ke desktop OpenGL versi XY, sedangkan "ES XY" akan merujuk ke OpenGL ES XY
Secara struktural , ES 2.0 memiliki lebih banyak kesamaan dengan core GL 3.3 dibandingkan dengan GL 2.1. GL 3.3 dan ES 2.0 keduanya berbasis shader murni. Keduanya berbasis objek buffer murni. Dll. GL 2.1 memiliki banyak perangkap kinerja dan kode yang akan membuatnya mudah untuk menulis aplikasi GL 2.1 yang tidak mudah dibawa-bawa portabel ke ES 2.0.
Namun, dalam hal sintaks bahasa shading , GLSL ES 1.00 (pemetaan ke ES 2.0) jauh lebih mirip GL 2.1 GLSL daripada GL 3.3. Kata kunci attribute
dan varying
tidak ada di 3,3 inti; menggunakan in
dan out
, yang jauh lebih konsisten dan masuk akal ketika Anda berurusan dengan lebih dari 2 tahap shader (itulah sebabnya ES 3.0 mengadopsi sintaks GL 3.3).
Sangat mudah untuk memetakan konsep - konsep yang dipelajari dalam GL 3.3 hingga ES 2.0. Jadi, jika Anda mempelajari GL 3.3 untuk berbagai alat untuk melakukannya, Anda akan mengerti cara bekerja di dunia ES 2.0. Anda harus mencari tahu di mana subset berada, tentu saja (yaitu: hal-hal yang tidak dapat dilakukan oleh GL 3.3 yang tidak dapat dilakukan ES 2.0), tetapi konsep-konsepnya sama.
Memetakan sintaks GLSL, sehingga Anda dapat menyalin shader dari satu ke yang lain, sedikit lebih sulit. Tapi sungguh, yang diperlukan hanyalah beberapa definisi di tempat yang tepat. Juga, GLSL 3.30 memiliki beberapa fitur kompatibilitas ES, seperti highp
dan sebagainya (yang tidak melakukan apa-apa di desktop GLSL).
Jadi, Anda mendapatkan sesuatu untuk ES 2.0 saat belajar dari GL 3.3 bukannya GL 2.1.