Öğrenebileceğin birçok şey var. İşte her biri hakkında düşüncelerim, OpenGL’e yeni gelen birinin bakış açısıyla.
OpenGL Örnekleri
Orada okuyabileceğiniz birçok örnek kod var. G-truc'un örnekleri oldukça geniştir ve birçok gelişmiş özelliği kapsar.
Ancak, eğer bir acemiyseniz , örneklerden öğrenmek öğrenmenin çok kötü bir yoludur. Gerçekten anlamadığınız kodları okumak neden işe yaradığını öğretmeyecektir. Aslında, yukarıdaki bağlantı sayfasındaki metin özellikle ve haklı olarak örneklerin yeni başlayanlar için olmadığını belirtir.
Çıplak kaynak kodundan öğrenmek, çok fazla yorum yapılmadığı sürece (bu noktada bir öğreticidir) kolay bir şey değildir. Bunu yapmaya çalışmak, kargo kültü tarzı programlama ve kopyala ve yapıştır kodlamasını teşvik eder. Gerçekten yaptığınız her şeyin sadece bir yerden başka bir yere kod kopyalarken bir şeyin nasıl çalıştığını anladığınızı ikna etmek çok kolaydır. Bir şeyleri karıştırabilir ve eşleştirebilirsiniz, ancak doğru öğretim materyali olmadan gerçek anlayışı elde etmek zordur.
OpenGL Kitapları
OpenGL'nin gelişimi için çok sayıda gerçek satın alınabilir kitap vardır. Buradaki en büyüğü hakkındaki düşüncelerimi ele alacağım.
OpenGL Redbook
Bu, tamamen pratik bir bakış açısıyla biraz sorunlu. Bakınız, 7. baskı GL 3.0 ve 3.1'i kapsamaktadır. Bu oldukça eski. O zamandan beri OpenGL'ye eklenen pek çok faydalı özellik var, bir şeyleri nasıl yazacağınızı değiştiren özellikler. Ve hepsi donanım özellikleri değildir.
8. basım "yakında" geliyor ve 4.1'i kapsayacak. Eski sabit işlevli şeyleri kapsadığı hakkında hiçbir kelime yok.
Bu kitabın tamam olduğunu söyleyebilirim. Bununla ilgili en büyük sorun bilginin organizasyonu. Öğrenme için yapılan bir kitaptan daha kapsamlı bir referans el kitabı gibi. İşte demek istediğim.
Öğretim yaparken yapılması gereken en önemli şeylerden biri, öğrenciye önemsiz bilgilerle aşırı yüklenmemektir. Ancak Redbook tam olarak bunu yapıyor. Malzeme tanıtırken, çok fazla malzeme tanıtır . Eldeki göreve gereksiz.
Ne hakkında konuştuğunuzu ve ne zaman konuştuğunuzu kitabınızı iyi bir öğrenme kaynağı yapmak için çok önemlidir. Redbook daha uygun bir zamana kadar hiçbir zaman bilgileri saklamıyor. Üçgenler ve ilkellerin nasıl çizileceği hakkında konuştuğunda , onları çizme hakkında her şeyi bir kerede anlatıyor . Her seçeneği, her işlevi, her parametreyi vb. Kapsar.
Bu sadece iyi bir bilgi organizasyonu değil.
OpenGL Superbible
Bu kitabın beşinci baskısı sadece çekirdek GL 3.x'i kapsar, bu nedenle sabit işlev yoktur.
Bununla birlikte, kitabın genel organizasyonu, dördüncü baskı versiyonunun organizasyonu ile hemen hemen aynıdır. Dördüncü baskı sabit işlev kullandığından ve daha sonraları gölgelendirici kullanılmadığından bu imkansız görünüyor.
Bunu başarmanın yolu kitapla ilgili 1 numaralı şikayetim. Temel olarak, yazar bir sabit fonksiyon OpenGL formunu uygulayan bir kütüphane inşa etti. VAO'ları, tampon nesnelerini, gölgelendiricileri ve çeşitli diğer şeyleri sarar, böylece GL boru hattının nasıl çalıştığı gibi şeyler hakkında konuşmak zorunda kalmadan çizim nesnelerine, matris matematiğine ve dokulara ulaşabilir.
Tüm bu ayrıntıları gizleyerek, malzemenin sindirilmesini kolaylaştırır. Ancak, çoğu zaman, kitaplık olmadan nasıl çalışacaklarını bilmeden Süper Kullanıcı'dan uzaklaşan insanları göreceksiniz. Gölgelendiricilerin tampon nesnelere nasıl bağlandığını, verilerin boru hattını nasıl aktığını vb.
Servis edilebilir bir kitaptır, Redbook'tan daha çok. Her şey başarısız olursa, işi yapacak. Ama bence daha iyi olabilirdi.
Ayrıca, bazı gözden geçirenlere göre, normalize edilmiş değerleri kullanarak verilerin öznitelik verilerinin paketlenmesi gibi bazı faydalı bilgileri kaçırdığı görülmektedir.
OpenGL Online Malzemeler
Birinden öğrenebileceğiniz birçok çevrimiçi materyal var.
NeHe Öğreticiler
Diğerlerinin de belirttiği gibi, NeHe öğreticileri çok güncel değil. Sabit fonksiyonlu OpenGL'ye odaklanırlar. Genellikle sabit GL fonksiyonunu öğrenmenin kolay olduğu söylenir. Ama bu onu iyi bir fikir yapmaz.
Sabit fonksiyonlu boru hattının gerçekte nasıl çalıştığını anlamak zor. Shader'ı öğrenmekten daha zor olduğunu söyleyecek kadar ileri giderdim. Bir kez olsun, gölgelendiriciler basittir. Doku ortamı şeylerinin, birleştiricilerin ve notların karmaşıklığının anlaşılması çok zordur ve her şeyin doğru yapıldığından emin olmak için dokümanlara başvurmak için sık sık ziyaret gerektirir. Her şeyi doğru anlamış olsanız bile, her şeyin kırılmasına neden olan küçük bir hata yapmak kolaydır.
Fark sabit fonksiyonlu çalışması olmasıdır olmadan bunu anlamak. Bu, kargo kültü programlamasını teşvik eder. Gerçekten ne yaptığını bilmeden ekranda bir şey elde etmeyi mümkün kılar . OpenGL.org forumlarında, sabit işlevi çevreleyen minutilerle ilgili, gluLookAt'ın nasıl çalıştığını bilmeyen insanlardan, aydınlatma ile ilgili zorluklara, doku ortamı ile çalışmak için belirli bir etki elde etmeye çalışan insanlara sürekli olarak sorular görüyoruz.
Yani hayır, NeHe'nin OpenGL öğrenmenin iyi bir yolu olduğunu sanmıyorum.
Yukarıdaki yorumlar, Swiftless , Lighthouse ve benzeri gibi gölgelendirici temelli olmayan herhangi bir eğitim için kullanılabilir .
Wikibook'un OpenGL Programlaması
Vikikitap OpenGL Programlama muhtemelen NeHe’nin modern eşdeğeridir. GL versiyon 2.1'i kapsar, çünkü onu mobil platformlarla ilgili tutmak istiyorlar. Bu sizin için önemliyse, elbette buraya bakın.
NeHe ve dolayısıyla bu Vikikitap ile ilgili diğer konu, kaynak koduna odaklanılmasıdır. Metin kod oranı çok küçük; Orada bir olan çok kodunun, fakat metin gerçekten nasıl hepsi eserler açıklamaz.
Örnek olarak, Eğitim 2'nin altına bakın. Harmanlamayı tanıtır. Harmanlamanın nasıl çalıştığını söylemez. glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA)
Aslında ne anlama geldiğini veya ne anlama geldiğini söylemez. Sadece şöyle yazıyor: "İşte işleri şeffaf yapan bir kod."
Bu en iyi öğrenme ortamı değil.
Eksik Öğreticiler
Swiftless bir dizi OpenGL 4.x dersi var . Durian Software ayrıca bazı gölgelendirici tabanlı OpenGL dersleri de veriyor . Ve "OpenGLBook.com" dersleri var .
Bunların ortak noktası, eksik ve terk edilmiş olmalarıdır. Hepsi yaklaşık 4-5 ders verdi ve sonra bırakıldı. Hiçbiri tekstile, aydınlatmaya veya benzeri bir şeye ulaşamadı. Durian tekstile çarptı ama aydınlanmadı.
Onlardan pek çok şey gleemed olabilir, ama aynı zamanda eksik olan çok şey var.
Utanmaz Kendini Tanıma
Kendi Modern 3D Grafik derslerimi incelemek korkunç bir çıkar çatışması olur. Bunun yerine, arkalarındaki organizasyon ve neden iyi olduklarını düşünüyorum.
Ah ve evet, Öğretici 17 üzerinde çalışıyorum. Proje ölmedi.
İlk üç bölüm, OpenGL boru hattının nasıl çalıştığını gerçekten öğreniyor. Superbible başarısız oldu çünkü detayları gizlemeye çalıştı. Bunun yerine, bu ayrıntıları gerçekten çok iyi açıklamaya çalışıyorum. Defalarca. Giriş, boru hattını düz metin olarak açıklamaktadır. İlk öğretici kod eşliğinde açıklıyor. İkinci ders ise onu daha da çok ziyaret ediyor.
Oradan doğal olarak nesneleri konumlandırmaya geçiyorum. Bu üniformaları tanıtıyor, ancak üniformaları ve perspektif projeksiyonunu aynı anda sıkışmak istemedim. Böylece iki kavramı ayırdım. İzdüşümden sonra, derinlik tamponlama makul bir adım gibi göründü, bunu takiben dönüşümler ve matrisler nasıl işlerdi. Ondan sonra kameralar. Kuaterniyonlarla rotasyon geç bir ekleme oldu, ama tomurcuklanan grafik programcısı için konuşmanın önemli bir şey olduğunu hissediyorum.
Işık dersleri yine birbiri üzerine inşa ediyor. Dağınık, sonra parça başına aydınlatma, sonra speküler. Dinamik aralık ilginç bir seçimdi. Çoğu tanıtım materyali ondan uzak durmaya çalışıyor, ama ben kucaklıyorum. Işık yoğunluğunun her zaman aralıkta olduğunu düşünüyorsanız, bugünlerde bir grafik programcısı değilsiniz. Ve lineer renkli bir boru hattının nasıl korunacağını bilmiyorsanız, bugünlerde bir grafik programcısı değilsiniz.
Işıklandırmanın sonuncusu, sahtekârlar üzerindeki garipti. Özellikle kitap devam ederken, bazı OpenGL fonksiyonlarını göstermek yerine, problemleri çözen dersler tasarlamaya çalışıyorum. Eğitici tasarımımın çoğu, bazı konular hakkında konuşmanın yollarını bulmaya devam ederken, bunları hala gerçek meseleler haline getiriyor ve "X'i şimdi öğreniyoruz" açık değil. Geometri gölgelendiricileri zor olanıdır, çünkü pek fazla sorunu çözmezler.
Sahtekârlar, GS'lerin aslında çözme için yararlı olduğu bir sorunu temsil ediyordu. Ayrıca, discard
bir parçanın derinliğini değiştirmek ve değiştirmek gibi az kullanılan diğer şeyler hakkında konuşmamı sağladı . Ve bu gerçekten gölgelendiricilerin gücünü gösterir: düz bir karenin küre haline gelmesini sağlayabilirsiniz.
Tekstüre etme dersleri de ilginç. Yaygın renkli dokulardan bahsetmemin sebeplerinden biri, üçüncüsü bir süre sRGB dokularından bahsetmeye devam etmekti. Bu yolla, doğrusal konularla uğraşmak zorunda kalmadan dokular etrafındaki temel sorunları (veri yükleme, gölgelendiricilere koyma, filtreleme, kenetleme vb.) Konuşabilirim. O zaman ben sadece bu konuda bir öğretici harcayabilirim. Bu bana gerçekten, gerçekten bir lineer renk boru hattını korumanın ne kadar önemli olduğunu vurgulamamı sağladı .
Bu benim evcil hayvanlarımdan biri.