OpenGL'de zaten bazı 'Nesne' kavramları var.
Örneğin, kimliği olan herhangi bir şey bir nesne olarak geçebilir (Özellikle 'Nesneler' olarak adlandırılan şeyler de vardır). Tamponlar, Dokular, Köşe Tampon Nesneleri, Köşe Dizi Nesneleri, Çerçeve Tampon Nesneleri vb. Küçük bir çalışma ile sınıfları çevreleyebilirsiniz. Bağlamınız uzantıları desteklemiyorsa, eski kullanımdan kaldırılmış OpenGL işlevlerine geri dönmenin kolay bir yolunu da sunar. Örneğin, bir VertexBufferObject glBegin (), glVertex3f () vb. Kullanmaya geri dönebilir.
Geleneksel OpenGL kavramlarından uzaklaşmanız gerekebilecek birkaç yol vardır, örneğin muhtemelen arabellek nesnelerine arabelleklerle ilgili meta verileri depolamak istersiniz. Örneğin, arabellek köşeleri saklıyorsa. Köşelerin formatı nedir (yani konum, normaller, metin kartları vb.). Hangi ilkelleri kullanır (GL_TRIANGLES, GL_TRIANGLESTRIP, vb ...), boyut bilgisi (kaç şamandıra saklanır, kaç üçgen temsil eder, vb ...). Bunları çizim dizileri komutlarına takmayı kolaylaştırmak için.
OGLplus'a bakmanızı tavsiye ederim . OpenGL için C ++ bağlamaları.
Ayrıca glxx , bu sadece uzantı yükleme için.
OpenGL API'sini kaydırmanın yanı sıra, biraz daha yüksek bir seviye oluşturmaya da bakmalısınız.
Örneğin, tüm gölgelendiricilerinizden yükleyen ve kullanan bir malzeme yöneticisi sınıfı. Ayrıca, mülklerin kendilerine aktarılmasından da sorumlu olacaktır. Bu şekilde arayabilirsiniz: material.usePhong (); material.setTexture (sometexture); material.setColor (). Bu, gölgelendiricilerinizin 1 blokta kullandığı tüm özellikleri içeren 1 büyük tampona sahip olmak için paylaşılan tek biçimli tampon nesneleri gibi daha yeni şeyleri kullanabileceğiniz için daha fazla esneklik sağlar, ancak desteklenmiyorsa her bir gölgelendirici programına yüklemeye geri dönersiniz. 1 büyük monolitik gölgelendiriciye sahip olabilir ve destekleniyorsa tek tip rutinleri kullanarak farklı gölgelendirici modelleri arasında geçiş yapabilir veya bir grup farklı küçük gölgelendiriciyi kullanmaya geri dönebilirsiniz.
Gölgelendirici kodunuzu yazmak için GLSL özelliklerinden harcamalara da bakabilirsiniz. Örneğin #include, gölgelendirici yükleme kodunuza inanılmaz derecede kullanışlı ve uygulanması çok kolay olacaktır (bunun için bir ARB uzantısı da vardır). Kodunuzu, hangi uzantıların desteklendiğine bağlı olarak anında oluşturabilirsiniz, örneğin paylaşılan bir tek tip nesne kullanın veya normal üniformaları kullanmaya geri dönün.
Son olarak, sahne grafikleri, özel efektler (bulanıklık, parıltı), gölgeler, aydınlatma ve benzeri çoklu işleme geçişleri gerektiren şeyleri yapan daha yüksek düzeyli bir oluşturma hattı API'si isteyeceksiniz. Ve dahası, grafik API ile hiçbir ilgisi olmayan ama sadece bir dünyadaki nesnelerle ilgilenen bir oyun API'sı.