Çoğu öğretici güncel olmadığında OpenGL ile başlayarak [kapalı]


16

Eminim zaten bunun gibi bir sürü soru var, ancak OpenGL kütüphanesinin sürekli güncellenmesi onları tamamen ortadan kaldırıyor ve bir veya iki ay içinde, cevaplar yine değersiz olacak.

C ++ kullanarak OpenGL'de programlamaya başlamaya hazırım. Çalışan bir derleyici var (DevCpp; VC ++ 'a geçmemi istemeyin ve nedenini sormayın). Şimdi sadece OpenGL ile nasıl programlanacağına dair sağlam bir eğitim arıyorum. Asistanım NeHe Productions tarafından sağlanan öğreticiyi buldu, ama öğrenmeye geldikçe, TARİH DIŞINDA! (OpenGL tuvalini desteklemek için temel bir pencereyi bir araya getirmiş olmama rağmen)

Sonra çevrimiçi oldum ve görünüşe göre freeglut kullanan OpenGL SuperBible buldum? Ama bilmek istediğim, SuperBible 5. baskısının artık güncel olup olmadığı. Freeglut için öneri buldum son sürümü 2.6.0 ama şimdi 2.8.0 olduğunu söyledi!

  • OpenGL SuperBible hala başlamak için iyi ve oldukça güncel bir yer mi?
  • OpenGL öğrenmek için daha iyi bir yer var mı?
  • Freeglut'u DevCpp içerme dizininde (belki GL'de) saklamama izin var mı, yoksa bazı önemli prosedürler var mı?
  • Daha yeni başladığımdan beri sormayı düşünmediğim herhangi bir yorum veya öneri var mı?

@ dreta benim için bazı şeyleri temizledi, bu yüzden şimdi ne soracağım konusunda daha iyi bir fikrim var:

Ben doğrudan OpenGL erişmek yerine bir sarıcı kitaplığı kullanarak OpenGL ile başlamak istiyorum düşünüyorum.
Sadece yeni başlayanlar için, programlamanın ve iyi sonuçlar almamın daha kolay olacağını düşünüyorum, ancak tüm kirli ayrıntıları (@stephelton'un belirttiği gibi) anlamak zorunda değilim.

Sorun şu ki, artık desteklenmeyen işlevlere tanımlanmamış referansları olmayan herhangi bir kütüphane bulamıyorum. Freeglut kulağa işlevsel geliyor, ancak yine de GLU kullanıyor.
Ne yapabileceğimi bilen var mı?
Ayrıca, ilk SuperBible'ın kaynağını derlemeyi denedim, ancak GLAPI bir tür olarak tanımlanmadığı için hatalar aldım, GLU kütüphanesinden kaynaklanan hata.

SuperBible'ı kullanmak istiyorum, ancak bunu nasıl düzelteceğimi bilmiyorum.


2
GCC'ye geçmelisiniz.
notlesh

DevCpp sadece bir IDE'dir; GCC'yi çalıştırır (spesifik olarak mingw). Ancak bahsedildiğinden beri, Eclipse CDT son 10 yıldır terk edilmediğinden tercih edilir.
Casper Beyer

4
@Casper DevCpp mirasının mirasçısı Code :: Blocks'du ve hala düzenli olarak güncelleniyor.
Alex Shepard

1
OpenGL etrafında bir sarıcı kitaplığı istiyorsanız, SFML'yi denemenizi öneririz . SFML, metin ve basit şekiller çizmenize izin verirken pencere oluşturma, zamanlayıcılar vb. SFML işlevlerini ve ham API çağrılarını karıştırarak, istediğiniz zaman "raw" OpenGL kullanarak boğulmayı bırakabilirsiniz.
Oskar N.

1
Başlığa "{CLOSED}" ekleyerek bir soruyu "kapatamazsınız". Sorular moderatörler tarafından kapatılacak veya yeterince kullanıcı soruyu kapatmak için oy kullanacak. Düzenlemelerinizi geri alacağım .. moderatörler kapatmaya karar verirse "KAPALI" başlığınıza otomatik olarak eklenecektir ..
bummzack

Yanıtlar:


19

Yerleşik Nicol Bolas, modern grafik programlama hakkında çevrimiçi bir kitap tutuyor . Modern OpenGL kullanır, her şey kolay bir şekilde tüketilir, başlamak için iyi bir yerdir. Modern OpenGL öğrenmek için kullanıyorum ve son 2 aydır harikalar yaratıyor.

Ayrıca burada ve orada bilgi parçaları var. OpenGL wiki oldukça iyi korunur. Kod "en iyi uygulamalar" değildir ve bazen OpenGL sürümü söz konusu olduğunda belirsizlik vardır, ancak bu nadir durumun dışında harika bir kaynaktır.

GLSL hakkında bilgi edinmek istiyorsanız , lighthouse3D'den GLSL Temel Eğitimi var . Bu sitede "güveniyorum" tek temel bilgi olsa da, dinlenme modası geçmiş eğilimindedir.

Modern OpenGL'nin nasıl yapıldığını anlamaya başladığınızda, belirli bilgileri aramak, eski kodu filtrelemek ve en önemlisi spesifikasyonu okumak için kolay bir zamanınız olacaktır. Sadece bir yerden başlamalısın.

Aslında, OpenGL kitaplarının hepsi olmasa da çoğu modası geçmiş. Yeni SuperBible bir tür ucube ve ben kimseye bunu tavsiye etmem. OpenGL 4.1 için OpenGL Programlama Kılavuzu 16 Eylül çıkıyor, ne yazık ki 7. baskı kullanımdan kaldırılmış kodu kullanıyor, bu yüzden sadece beklemek zorunda, eminim.

Ve elbette, burada her zaman soru sorabilirsiniz.


1
SuperBible'ı neden önermiyorsun?
Kodlayıcı

3
@AUTO SuperBible'ın 5. sürümü, "erişilebilir" hale getirmek için OpenGL'nin etrafında özel bir sarmalayıcı kullanır. Örneklerin birçoğu özel sargıyı aşırı derecede kullanıyor. Size ne önerildiğini öğretmez, yani OpenGL çekirdek spesifikasyonu. Gördüğüm şekilde, açıkça kullanımdan kaldırılmış OpenGL'yi öğrenmek zorunda değilseniz, o zaman bile var olduğunu unutun. Öğrenmenin bir anlamı yok. Çekirdek özellikleri çok daha net ve güçlü.
dreta

@AUTO Temel şartname başlangıçta çok daha zorlu, bu iyi bir şey. Oluşturma sürecinin çoğunu halletmeye zorlar ve size tam bir anlayış ve kontrol sağlar. Kullanımdan kaldırılan koddan çok, çok daha fazla olanak açar. Bundan sonra OS'nizin API'sını ve altındaki OpenGL'yi glut gibi şeyler olmadan öğrenebilirseniz harikalar diyarındasınız demektir.
dreta

Tamam, size önemli bir soru sormama izin verin: GLU kütüphanesi kullanımdan kaldırılmış ve tamamen desteklenmiyor gibi görünüyor; spesifikasyonu kullanarak, GLU ihtiyacını atlayarak doğrudan erişim elde edebilir miyim? Öyle ki, GLU kütüphanesi tarafından atıfta bulunulan mevcut olmayan işlevlere daha fazla bağlantı hatası alamaz mıyım?
Kodlayıcı

@AUTO GLU tamamen gereksiz, sadece grafik programlama dersi sırasında 10 ayak direği ile dokundum (kullanım dışı kod kullanmak zorunda kaldık, acı vericiydi, standartlar ders programından daha hızlı değişiyor, sanırım). Bu sadece kullanımdan kaldırılmış kodla yardımcı olan bir kütüphane. Kodunuzu GLU ile ayarladıysanız, büyük olasılıkla kokuyor.
dreta

1

Bu sorunun sorulmasından bu yana bir süre geçti, ancak umarım bu sizinle aynı soruya sahip olan insanlara yardımcı olacaktır.

Bir minibook okuyarak OpenGL ile başladım arcsynthesis.org. Kimin yazdığından emin değilim. Sitenin kaydı bitmiş gibi görünüyor, ancak burada bulabilirsiniz: http://web.archive.org/web/20140209181347/http://www.arcsynthesis.org/gltut/ . OpenGL 3.3 kullanıyor, bu nedenle modern boru hattını ve beraberinde gelen tüm uygulamaları kullanacaksınız, ancak mozaik veya hesaplama gölgelendiricilerine maruz kalmayacaksınız.

İncelemeye değer başka bir site https://open.gl/ . ÇOK başlangıç ​​odaklı gibi görünüyor ve yukarıdaki malzeme kadar derinlemesine şeyleri kapsamıyor, ancak yeni başlayan insanlar için iyi bir başlangıç ​​noktası olabilir.

Yardıma ihtiyacınız varsa OpenGL wiki dosyasını ve google işlev adlarınızı okumayı unutmayın. Wiki'deki bazı sayfalar tamamen işe yaramaz, ancak diğerleri hem referans hem de öğrenme materyali olarak oldukça faydalıdır.


1
Kabul edilen cevapta bahsedilen kişi Nicol Bolas
Jesse Dorsey

0

Bu eski eğitimler yeni başlayanlar için hala çok önemlidir. Aslında, OpenGL'nin son sürümleriyle değil, oradan başlamanızı öneririm. Daha yeni sürümler, çizim geometrisinin daha kolay yöntemlerinden bazılarını atmıştır (yani anında mod çizimi).

Son sürümlerde, köşe dizileri hazırlayıp göndermeniz ve video kartına köşe dizilerinizin sağladığınız dizide nasıl düzenlendiğini söylemeniz gerekir. Bunlar hata ayıklamak için hantaldır.

Bazı sürümler (yani OpenGL ES 2.x) kendi aydınlatma denklemlerinizi (Parça Gölgelendiricileri biçiminde) sağlamanızı ve kendi köşe verilerinizi istediğiniz yerde ekrana gelecek şekilde dönüştürmenizi gerektirir (Vertex Shaders). Bu hata ayıklamak için daha da zor ve yeni başlayanlar için bir yer (bence).

Bu yüzden aslında bu NeHe derslerine (vb.) Geri dönmenizi ve oradan başlamayı öneririm. "Güncel değil" olabilirler ama hala çalışırlar. OpenGL'deki oluşturma kanalında gerçekte ne olduğunu anlamaya başladığınızda ve bu şeyleri çalıştıran bazı matematiksel kavramlar hakkında fikir edindiğinizde, daha güncel yöntemlerden bazılarına bakmaya hazır olacaksınız. OpenGL oluşturma.


Aslında işe yaramıyorlar. Bu yüzden bu soruyu gönderdim. Kullanımdan kaldırılan gluPerspective işlevini kullanıyorlar ve mutlak bir yedek yok.
Kodlayıcı

1
Bu bir OpenGL işlevi değildir. Başka bir kütüphane tarafından sağlanan ayrı bir yardımcı program işlevidir. Kodu kolayca bulabilirsiniz - çok zor değil.
notlesh

Teşekkürler, ama sadece nasıl kullanılacağını bilmediğim mükemmel bir yedek buldum. "Float * matrix" argümanını kabul ederken, eskisi bazı dahili matris kullanır. Bunun için ne koyayım?
Kodlayıcı

Google'da "gluPerspective application" için ilk hit tam olarak aradığınız şey. OpenGL'nin bazı yeni sürümlerinde bulunmayan glFrustum'u çağırır (ES 2.x içermez). Bu bile impl bulmak çok zor değil.
notlesh

0

Diğerlerinin söylediği gibi, çoğu kitap ya kullanımdan kaldırılmıştır ya da çok ileri düzeydedir. Yine de, SuperBible'ın 5. baskısını öneriyorum, ancak sadece OpenGL'de neler yapılabileceğine hızlı bir genel bakış ve görünüm / projeksiyon vb.

Modern OpenGL'ye hemen dalmak muhtemelen ilk başta sizi bunaltabilir, bu yüzden şimdi kullanımdan kaldırılmış versiyonlarda bazı temel şeyleri yapmayı öğrenmeyi düşünün.

Ayrıca son zamanlarda bulduğum iyi eğiticilere sahip bir site eklemek istiyorum http://ogldev.atspace.co.uk/


Teşekkürler, bu eğitimi kontrol edeceğim; ancak OpenGL SuperBible'ı kullanmak için sorum hala devam ediyor: Freeglut buna dayanarak GLU'yu nasıl düzeltirim?
Kodlayıcı

@ OTO: FreeGLUT GLU'yu "temel almaz". Bazı FreeGLUT işlevleri GLU'yu çağırır, ancak bu işlevleri çağırmazsanız sorun yaşamayacaksınız.
Nicol Bolas

Ancak SuperBible'ın bu işlevleri çağırması olası değil mi? Ve eğer, ben yapamam kullanmak onu .
Kodlayıcı

Gerçekten, benim düşüncem SuperBible ile sağlanan kaynak kodu ile uğraşmak değil. Oku ama her şeyi sıfırdan yapmaya çalış. GLU ile ilgili sorunlarınızda en iyi tahminim, kitaplıklarınızı doğru bir şekilde yapılandırmamış / kurmamış olmanızdır. MinGW'nin en son sürümünü indirin. Ayrıca freeglut'un en son sürümünü indirin ve derleyin veya önceden derlenmiş bir kütüphane bulun. Her neyse, nasıl başlayacağınızı planlamak için çok zaman harcamak yerine bazı şeyler öğrenmeye başlamalısınız.
Grieverheart

@AUTO: Neden SuperBible onları arıyor olabilir? Onları çağırsaydı, SuperBible'ın kodu çalışmaz. Ki bu yüzden değil diyoruz.
Nicol Bolas

0

arcsynthesis.org (kabul edilen cevapta belirtilen site) maalesef aşağı ve dışarı görünüyor. (DÜZENLEME: bu bağlantıda mevcuttur !).

Anton Gerdelan'ın OpenGL 4 için eğiticileri çok okunabilir ve 2014 ortalarından itibaren güncel. İlk birkaç ücretsiz, geri kalanı küçük bir fiyat için harika değerlendirmeleri var amazon üzerinde mevcuttur. Şimdiye kadar memnun kaldım.

En OpenGL 3.3+ için biraz daha serbest dersler vardır http://www.opengl-tutorial.org/ . 2012 yılına dayanıyorlar, ancak diğer kaynaklar için iyi bir yardımcı malzeme olabilirler.


OGLDev güncel, derinlemesine ve özgürdür. ogldev.atspace.co.uk/index.html
Yattabyte


Mevcut görmek harika! Bu malzemeleri de kontrol edeceğim.
iHateCamelCase
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.