2012-02-06 19 views
5

Bu, Switch shader program in WebGL ile ilişkilidir, ancak şimdi soruyu yeniden sormak istedim, sorun hakkında ve ne sormak istediğimle ilgili daha net bir fikrim var.GlUseProgram'dan sonra hangi durum kaybolur/sıfırlanır?

Farklı gölgelendirici programları arasında geçiş yapmaya çalışıyorum, ancak aynı işlemdeki gölgelendirici programını değiştirirken işleri doğru bir şekilde yapamıyorum. Durumun glUseProgram() numaralı telefonu aradıktan sonra kaybolduğunu veya sıfırlandığını düşünüyorum.

Bu çağrıdan sonra hangi durum kayboluyor veya sıfırlanıyor? Başka bir deyişle, glUseProgram()'dan sonra tekrar bağlamak için neye ihtiyacım var?

cevap

0

Köşe dizileriniz ve vertex özellik dizilerinizin diğer programlarda farklı konumlara sahip olması (örneğin, this.locATex), örneğin doku bağlamaları ve örnekleyici üniformaları ile aynı sorunların ortaya çıkması mümkündür. Her bir program için kendiniz için başlatmanız gereken 'attribute unit uniforms' ve bu özellik konumlarını sorgulamanız gerekir ve dizilerinizi ve dokularınızı çizimden önce buna göre bağlayın. Diğer uçta başka bağlamalar da parça veri konumları gibi kırılabilir. Ama tavsiye ederim, yeni sorunlar :-) icat edilmeden önce biraz daha kod sağla.

+1

Tavsiyeleriniz için teşekkürler, fakat daha genel tavsiyelerde bulunmaktayım, örneğin üniformaları yeniden ayarlamak zorunda mıyım yoksa değerlerini koruyorlar mı? Öznitelik veya tek tip konumlar belirli bir program için değerlerini sürdürüyor mu? Tekstüre yeniden etkinleştirilmeli mi? Ve bunun gibi. – AshleysBrain

+0

Öznitelik konumları ve gerçek tekdüzen konumlar ve değerler program bağlandıktan sonra devam eder. Tek tip tamponlar olsa da daha fazla programa bağlanabilir. Tekstüre etme ihtiyacı, sabit fonksiyon boru hattını kullanmadığınız için yeniden etkinleştirilmemelidir. – Sam

+0

Bir doku biriminin birden fazla bağlantı noktası vardır, örneğin bir 2D ve 3B dokuya bağlayabilir ve bunlardan herhangi birine uygun bir örnekleyici forması kullanarak erişebilirsiniz. – Sam

İlgili konular