Birkaç kitapla yukarıdaki kitaplara katılıyorum:
OpenGL programlama 8. rehberi çıktı ve modern OpenGL 4.3 için yeniden yapıldı.
SuperBible 5th ed, başlamak için bir koltuk değneği kütüphanesi olmasını sağlar, ancak kitaptan geçerken o kütüphanenin işlevselliğini yeniden uygularsınız, böylece sonunda tamamen ustalaşmalısınız. Ayrıca, nesne yönelimli bir dil kullanıyorsanız OpenGL öğelerini bir şeye sarmanızı şiddetle tavsiye ederim. Eğlenmek için kendi kütüphanem üzerinde çalışıyorum, gidilecek yol gibi görünüyor, onu kendim uygulayarak tüm giriş ve çıkışları anlıyorum ve yalnızca gerçekten kullandığım parçaları kullanmam gerekiyor. Ayrıca, gölgelendiricilere veri gönderme gibi bazı şeyleri soyutlayabilirsiniz (shinyMaterial.setColor (Kırmızı) çok daha güzel değildir), bu da eski alternatifleri sağlayarak bazı şeyleri desteklemenize olanak sağlar. Bir de oglplus var .
Modern 'çekirdek' OpenGL öğrenme ile ilgili temel sorun, sadece bir küp çizmek için bile basit bir boru hattı oluşturmak ve çalıştırmaktır. Aşağıdakileri anlamanız gerekir:
- Matrix işlemleri ( eğer C ++ 'ta GLM kullanıyorsanız , burada bir MatrixStack OpenGL Resmi olmayan SDK sürümüne veya burada basit olanıma da ihtiyacınız olacak .)
- GLSL gölgelendirici programlaması.
- gölgelendiricilere ve Vertex Buffer Objectlerine ciltleme verileri. Sadece gerçek saf çekirdek profilini öğrenmek istiyorsan, hepsinin aynı anda uygulanması gerekecek ve eğer bir şey kırılmışsa, hiçbir şey görmeyeceksin ve yanlış gittiği yeri neredeyse hiç bilmiyorsun. Bu aynı zamanda temel aydınlatma gibi şeyleri de kapsamaz (programlama diline ek olarak gölgelendirme algoritmalarını öğrenmeniz gerekir).
Ancak, çekirdek profil ile özveriyle başlamanıza gerek yok. Kullanımdan kaldırılan işlevlerin bir kısmını başlangıçta kullanın, hemen hemen her şey onu destekleyecektir, sonra onu modernleştirin.
Bir başka konu da 'modern' OpenGL'in gerçekten 3 şeye başvurabileceği:
İlki, sabit fonksiyonlu boru hattının aksine programlanabilir gölgelendirici boru hattıdır. Temel 'modern' teknikler, OpenGL 2.0'ın 2004 yılında piyasaya sürüldüğü günümüzde piyasaya sürüldüğü gölgelendiricilerin (öğreticilerin henüz güncellenmediği) piyasaya sürülmesinden bu yana mümkün olmuştu. Sorun şu ki, OpenGL geliştiricileri bugün bile tüm bunlardan yararlanamayabilirler, sadece OpenGL 1.5'i destekleyen Intel yonga setleri ve sadece iPhone'ları destekleyen Android / Android telefonlar gibi pek çok berbat netbook var OpenGL ES 1.1. OpenGL 2.0 ve OpenGL 3.x / 4.x'teki bu şeyler arasındaki tek gerçek fark şu anda çekirdek profil için zorunludur.
Modern OpenGL ayrıca 3.x, 4.x'deki yeni öğelere de gönderme yapabilir. Vertex Dizi Nesneleri , Framebuffer Nesneleri , Düzgün Tampon Nesneleri / std140 , düzen niteleyicileri , GLSL alt programları gibi şeylerve bunun gibi. Bulduğumların çoğu program yapmak için çok daha güzel şeyler yapabilir. Ayrıca genel motor boru hatlarınızı incelikle değiştirebilirler. Bunlar ayrıca, yardımcı işlevler vb. Yaparak küçük bir çabayla destekleyebileceğiniz şeylerdir (Örneğin, UBO'lar desteklendiğinde değerleri el ile gölgelendiricilere yüklemeyi yöneten kullanın; , belki de otomatikleştirmek için oraya küçük bir gölgelendirici yeniden yazı koyun). Bu şey yalnızca yeni video kartlarında çalışır, onu destekleyen herhangi bir netbook veya herhangi bir yeni nesil video oyun konsolunu görmezsiniz (OpenGL ES'ye benzer kendi OpenGL alt kümelerini kullanırlar). En son OSX sadece 3 tane var.
Ultra Modern yeni nesil OpenGL. OpenGL 4.3 daha yeni çıktı. Hesaplama gölgelendiricileri, glMultiDrawElementsIndirect ve gölgelendirici depolama tamponları ile birlikte gelir. Bu, tüm köşe verilerini GPU'ya yüklediğiniz ve ardından programınızda yapmak yerine ne çizilmesi gerektiğini hesaplamak için hesaplama gölgelendiricileri kullandığınız temelde farklı bir boru hattı sağlar. Ne yazık ki bu çok yeni, bu yüzden herhangi bir iyi öğreticiler bilmiyorum. Bunun nasıl çalıştığının ana hatlarını veren OpenGL 4.3 incelemesine bir göz atın (ayrıca yazar bunu anlatan yayınlanacak bir GPU Pro makalesi olduğunu da söyler). Yepyeni olmak, bu aşamada hiçbir yerde desteklenmeyecek (beta sürücülerle daha yeni bir nvidia kartı olmadıkça). Bazılarını uygulamak için OpenCL / CUDA kullanabilirsiniz.
GlBegin, glEnd, glVertex *, glNormal *, glTextCoord *, glTranslate *, glRotate *, glLoadIdenity, glModelViewMatrix ve benzerlerini atlardım. Bunun yerine, gölgelendiricisiz Vertex Tampon Nesneleri öğrenmeye başlamak için, bu noktada 3D'yi düz düz beyaz bir üçgen kullanmayın, böylece matrisleri kullanarak 3 boyutlu işlemlerle çalışmak zorunda kalmazsınız (kısa zamanda bunları gölgelendiricilere bağlamayı öğrenmeniz gerekir) eski yoldan öğrenmenin anlamı yok). Daha sonra gölgelendiricilere eklediğinizde, artık köşe özelliklerini kullanmak isteyeceğinizden, köşe tamponu nesnelerinizin bağlama şeklini değiştirmeniz gerekecektir. Üniformalarla özelliklerin onlara nasıl iletileceğini öğrenin. Ardından, GLM ile matris işlemlerini öğrenin, matrisleri gölgelendiricilere bağlayın ve 3B çalışmasını sağlayın. Bunu yaptıktan sonra temelde sadece tekstüre gibi daha gelişmiş şeyleri öğrenmek,
Çoğu OpenGL 2.0+ ile çalışan gölgelendirici programlama boru hattını kapsayan bazı genel çevrimiçi modern OpenGL dersleri:
Diğer genel öğrenme kaynakları için. OpenGL ES iyi bir başlangıç noktası olabilir. OpenGL ES, kullanımdan kaldırılan tüm şeyleri temizledi. OpenGL 4.1, OpenGL ES ile tam bir uyumluluğa sahiptir, bu nedenle bir OpenGL ES programı almak ve OpenGL 4.1'de çalıştırmak mümkün olmalıdır. Ve temel ilkeler her ikisi için de aynıdır.
Unutulmaması gereken bazı şeyler, OpenGL ES 3.0'ın henüz piyasaya sürüldüğü, ancak yeni olduğu için henüz herhangi bir öğretici veya donanım desteğine sahip olmayacağı. Herhangi bir önemli temel değişiklik gözükmüyor (OpenGL ES 1.0-> 2.0 ile gördüğümüz sabit boru hattı ile gölgelendirici modeli arasındaki fark gibi). Yani muhtemelen güncel olmayan şeyleri öğrenmeyeceksiniz.
Ayrıca, OpenGL ES sıklıkla EGL kullanacaktır, bu yüzden bir Pencere açmak için başka bir yol öğrenmeniz gerekecektir, ancak bu çok zor olmamalıdır. Aksi halde, etrafta birkaç OpenGL ES sarmalayıcısı / emülatörü vardır veya varsa (veya emülatörlerini kullanırken) Android / iPhone'da öğrenebilirsiniz.
Orada Addison Wesley OpenGL ES 2.0 Programlama Kılavuzu kırmızı kitabın eşdeğerdir.
Ayrıca, modern OpenGL’nin çoğunun yaşadığı yer olan GLSL gölgelendirici odaklı konulara da bakabilirsiniz. Sadece öğrendiklerinizin şeylerin OpenGL bağlayıcı “yapıştırıcı” tarafını kapladığından emin olmanız gerekir.
OpenGL Gölgelendirme Dili 2. basımına (Turuncu Kitap) bakın.
OpenGL 4.0 Gölgelendirme Dili Yemek Kitabı biraz daha kanama getiren OpenGL eşyalarını kapsıyor ancak kapsamlı bir eğitici değil. Üniforma tampon nesneleri ve GLSL alt programları gibi en son gerçek dünya OpenGL uygulamalarında biraz bilgi sahibi olmak kesinlikle bir göz.
Sonunda WebGL'ye bakabilirsiniz, ancak JavaScript’te olsa da biraz daha farklı ve hata ayıklaması daha zor olacaktır.