2010-02-26 31 views

cevap

19

Bunu yapabilirsiniz, örn. ana giriş noktasından çeşitli gölgelendirici nesnelerde uygulanan işlevlere işlev çağrıları yaparak.

main() { 
    callToShaderObject1() 
    callToShaderObject2() 
} 

bu callToShaderObject fonksiyonlarının her biri farklı shader nesneleri yaşayabilir, ancak tüm nesneler o kullanılmadan önce aynı programda bağlı ve bağlantılı olmak zorunda.

+0

Curioisity'in dışında, neden söz konusu parça gölgelendiricisinde tüm işlevlere sahip olmanın aksine, bunu neden yapıyorsunuz? Bu şekilde kod, çoğaltma gerektirmeden diğer gölgelendirici programlarıyla paylaşılabilir mi? –

+0

@Nick: Kendimi kullandığını görmedim. Gölgelendirici programları gölgelendirici nesneler oluşturma fikrini ilk defa okuduğumda şaşırdım. Bu yüzden, neden bu _can_ bunu biliyorum. Standart derleme modelinden inşa edilmiştir ... – Bahbar

+2

Güncelleme: Şimdi modifiye MineCraft gölgelendiricileri çalışırken, bunu kullanımda gördüm. Bu durumda, her gölgelendiricinin, çeşitli efektlerle birlikte çalışan çeşitli efektlerle açılıp kapatılabilen birçok seçeneği olduğu için oldukça kullanışlıdır. Böyle bir senaryoda ve birden fazla yazarın söz konusu olduğu durumlarda, fonksiyonları ayrı dosyalara ayırmak çok daha faydalı olur. –

4

Aynı anda koşamazlar, ancak farklı geometriler için farklı gölgelendiriciler kullanmakta veya farklı gölgelendiriciler kullanarak birden çok geçişte render etmekte özgürsünüz.

+1

Farklı bir program gerektiriyor mu? Yani her geçiş için farklı bir program? İçinde olduğu gibi, bir programda bir köşe ve parça gölgelendirici (tek geçişte?) Olabilir ve daha sonra başka bir programda bir köşe ve parça gölgelendiricisi olabilir (ikinci geçiş?)? Ben bunu hissettiğimde glUseProgram() 'ı değiştirebilir miyim? Yani aslında iki kez bir sahne mi yapıyorum? – Harry

+1

Tam doğru. Sabit geçişte çok geçişli bir işlem gibi, ancak geçişler arasında openGL ayarlarını değiştirmek yerine farklı programlar yüklüyorsunuz. –

İlgili konular