2D oyunlar için modern OpenGL nasıl kullanılır?


9

Ben 3D için "modern" OpenGL (3.0+) öğreticiler bir bolluk buldum, ama 2D oyun geliştirme için nasıl kullanılacağı hakkında bilgi ararken hiçbir şey yanında buldum. 2D gamedev için OpenGL kullanmaya nasıl başlayabilirim?

Özellikle, aşağıdaki konulara cevap almak istiyorum:

  • Ortografik projeksiyon için çeşitli matrislerimi nasıl ayarlamalıyım?
  • Gölgelendiriciler, 2D uygulamalarda 3D uygulamalarda olduğu kadar yoğun bir şekilde kullanılıyor mu? Öyleyse, 2B ayarındaki amaçları nedir?
  • Bir 2D oyun için açıkça gerekli olan çok sayıda dokuyu nasıl ele almalıyım?

Nispeten geniş bir soru için özür dilerim, ancak araştırmaya uzun zaman ayırdım ve modern OpenGL için geçerli olan çok az yararlı bilgi buldum.

Yanıtlar:


11
  • Ortografik projeksiyon için çeşitli matrislerimi nasıl ayarlamalıyım?

Hedefiniz 2D, değil mi? Yani herhangi bir projeksiyona ihtiyacınız yok. Projeksiyon, bir 3D dünyasını 2D bir düzleme yoğunlaştırma eylemidir. Gölgelendiriciyi, her tepe noktasının Z koordinatını varsayılan 0.0olacak şekilde ayarlayın ve ayarlanmanız gerekir.

Yine de X ve Y koordinatları için bir ölçek matrisi kullanabilirsiniz. Bunu Ölçekleme böylece -10.0için 10.0olur -1.0üzere 1.0. Referanslar uğruna, bunu yapmak için matris:

0.1   0.0   0.0
0.0   0.1   0.0
0.0   0.0   1.0
  • Gölgelendiriciler, 2D uygulamalarda 3D uygulamalarda olduğu kadar yoğun bir şekilde kullanılıyor mu? Öyleyse, 2B ayarındaki amaçları nedir?

Onlar yapabilir. Yine de, nesnelere sahte bir derinlik vererek Per-Pixel aydınlatma için kullanılabilirler. Ayrıca doku efektleri, su efektleri, görüntü üretimi için de kullanılabilirler ... hatta biraz hile ile fizik hesaplamaları yapmak için bile kullanabilirsiniz.

Bunu koymanın başka bir yolu: 3D için kullanıldıkları her şey. Sadece farklı uygulanır ve belgelenmemiş. Gerçi 2B oyunlar oynayan insanlar, gerçekçi efektleriniz yoksa muhtemelen durumunuza girmeyecek olsalar da, onlar da gerekli değildir.

Yine de bir sprite oluşturmak için gölgelendiricilerin temellerini bilmeniz gerekecek.

  • Bir 2D oyun için açıkça gerekli olan çok sayıda dokuyu nasıl ele almalıyım?

3D'de yaptığınız gibi. Doku Nesneleri, PBO'lar ve bir Doku Atlası veya birkaç demet. Muhtemelen birkaç yapı / sınıf ve baş ağrısı da. Bence buna "Varlık Yönetimi" ya da benzeri bir şey denir.

  • 2D gamedev ile nasıl başlayabilirim?

Muhtemelen orada birkaç öğretici var. 3D sürümü daha yaygın olmasına rağmen, 3D için OpenGL öğrenmeyi ve öğrendiklerinizi 2D karşılığına uygulamayı söyleyebilirim. 3D ve 2D çok benzer, 2D Z koordinatını takip etmez.


5
2D için, Z tamponlama yapmak için yine de ortografik projeksiyon ve farklı Z koordinatları kullanabilirsiniz , aksi takdirde ressam algoritmasını kendiniz yapmanız ve doğru sırayla çizmeniz gerekir.
congusbongus

@congusbongus aslında, şeffaflık ile yazıyorsanız, büyük olasılıkla ressamın algoritmasını kendiniz yapmanız gerekecektir ...
Panda Pijama
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.