Yanıtlar:
- Başvuru için Doom3 en qgl.h .
OpenGL garip bir küçük API. Standart uygulamada yeni işlevler eksik olduğundan veya uzantılarla çalışmak istediğiniz için sık sık işlev işaretçileriyle çalışmalısınız. Örneğin, aramak istiyorsanız glCreateShader
, ancak geliştirdiğiniz işletim sistemi yeterince yeni GL başlıklarıyla birlikte gönderilmiyorsa glGetProcAddress("CreateShader")
, işlevi kullanıcının sürücüsünden yüklemek için kullanmanız gerekir . Ve sonra bu fonksiyon imlecini bir yerde saklamanız gerekir.
Geliştirme ortamınızın belirli bir işlevi olsa bile, kullanıcıların makineleri olmayabilir. Ve sonra belirli bir fonksiyon 2-3 formda gelebilir (satıcı uzantısı, ARB uzantısı, çekirdek işlevi) ve bu nedenle birkaç farklı ad altında bir işlev aramak zorunda kalabilirsiniz.
Birçok GL "yükleyici" kütüphanesi ( GLEW gibi ) GL sözleşmelerine bağlı kalmaya çalışır. Normal gl
-prefix ile "sahte" fonksiyonlar yaratırlar ve kodunuzu sihirli bir şekilde sadece gerekli özellikleri destekleyen herhangi bir işletim sistemi veya sürücü üzerinde çalıştırmaya çalışırlar. Yerine Esasen, glFoo
gerçek bir fonksiyonu olarak, bu sadece genel bir işlev işaretçisi ve (başlatma ya da ilk kullanımı sırasında) yükleyici kütüphane arama olduğunu FooEXT
, FooARB
ve Foo
bu bir uygulama bulur ve sonra atar kadar küresel bir işaretçi için bu. İstemci kodu sadece normal bir işlev çağırıyor gibi görünüyor, ancak başlatma sırasında çalışma sırasında tüm farklı platformlar ve sürücülerle ilgilenecek şekilde sihirli bir şekilde çözülüyor.
Diğer kütüphaneler, işlevleri ad alanlarına yerleştirir veya aksi halde GL normundan biraz farklıdır. id, kendi yükleyici yazdı ya kendilerinin ya var olanları sevmedim çünkü - daha muhtemel - Quake sadece kimlik kullanılmış olabileceğini Başka bir kitaplık önceleyen ( q
içinde qgl
kullanımına ilk id Tech oyundu Quake için muhtemel standları, GL).
GL spec bu olasılık ile yazılmıştır. Spec önek olmadan yazılır ; Hangi ön ekin kullanılacağına karar veren OpenGL uygulamasıdır gl
(elbette yaygın olan). İşlevleri ad alanlarına yerleştiren veya kendi öneklerini kullanan yükleyici kitaplıkları tamamen geçerlidir.
Quake motoruna dayanan Doom 3, tamamen platformda ve GL'nin tuhaflıklarını birden fazla platformda ele almak için bir yükleyici kitaplığı kullanmakta ve qgl
ön eki kullanmayı seçmede haklı .
id
kötü yazdım (büyük harf kullanımı konusunda tamamen haklısın), en.wikipedia.org/wiki/Id_Tech bulabildiğim tüm kaynaklarda hala boşlukla yazılmış.