Preconcepts
Tamam, şimdiye kadar topladığım şey şu:
- sabit boru hattı kullanma (kullanımdan kaldırıldı veya kullanımdan kaldırılacak)
- vbos store "object models" (çoğunlukla n köşe verileri)
- vaos, verilerin nasıl düzenlendiğini açıklar, böylece çizme çağrıları, her tür vbo'nun ne tür köşe bilgileri için ne olduğunu bilir (bir vao, birden çok vbo'ya başvurabilir, tersi oldukça zordur)
- her çizim çağrısı ayrıca gölgelendiricilere köşe verileri gönderir
3D'yi nasıl görüyorum (isteğe bağlı)
Bu bilgiler göz önüne alındığında, modern OpenGL ile 3D karmaşık nesneler çizmenin çok güzel olduğunu görebiliyorum. Temel olarak yerel koordinatları olan VBO'lara bir grup nesne modelini (muhtemelen Blender veya diğer benzer yazılımlardan) yüklersiniz ve daha sonra bir nesnenin her örneğine dünya alanına çizmek için farklı bir gölgelendirici parametresi (ofset) sağlarsınız.
Sorun / soru
2B'de sorunlar ve öncelikler tamamen farklıdır. Çok karmaşık nesneler çizmezsiniz, karmaşık projeksiyon matrislerine ihtiyacınız yoktur ve whatnot ve gölgelendiriciler çok daha basittir.
Modern OpenGL ile sık sık (gerçekten sık sık, temelde her karede) değişen geometri çizmenin en iyi yolu nedir?
Aşağıdaki paragrafta, ilgilendiğim değişiklik türlerini daha iyi tanımlayan bazı sorunlar fikirlerini (daire ve dikdörtgen sorunu) görebilirsiniz.
Denemelerim (isteğe bağlı)
Ekranda temel 2B geometri çizmekle nasıl başa çıkacağımı düşünmeye başladım:
- bir kare:
[(1, 0), (1, 1), (0, 1), (0, 0)]
yerel alandaki bir karenin geometrisi için bir VBO yükleyin , ardından gölgelendiriciye gerçek kare genişliği ve dünya koordinatları ve renk bilgileri sağlayın
serin, kolay görünüyor. Bir daireye geçelim:
- bir daire: üçgen fan ... eh. ne kadar hassasiyet (tepe noktası sayısı)? küçük daireler için hassasiyet küçük ve hata daireler için hassasiyet yüksek olmalıdır. Açıkça 1 VBO yüklemek her durumda uygun olmayabilir. Bir daire daha büyük olacak şekilde yeniden boyutlandırıldığı için kesinlik eklemem gerekirse ne olur?
Daha az serin. Biraz daha kolay bir şeye, bir dikdörtgene geçelim:
- bir dikdörtgen: ha. "genel dikdörtgen geometrisi" yoktur. Sadece bir genişlik / yükseklik oranına sahipsiniz ve hepsi bu, ancak boyut değişirse her dikdörtgen muhtemelen farklıdır.
Gördüğünüz gibi, işler oradan yokuş aşağı gidiyor. Özellikle karmaşık çokgenler ve ne ile.
Kod politikası yok: P
Sadece fikir bir bakış gerekir, hiçbir kod gerekli, özellikle C veya C ++ kodu. Sadece şöyle bir şey söyleyin: "bu köşe verisiyle bir VBO yapın ve sonra bağlayın, ...".