Belirtdiğiniz gibi değerleri hesaplayabilir ve bunları doğrudan atayabilir, ancak belgeleme amacıyla izin vermek istiyorsanız, değerlerin shader kodunun her uygulamasında aynı olacağını varsayardım.
Tekdüzen Değişkenler, bir defada tek tip değişkeni değiştirmediğiniz sürece, bir kez hesaplayabileceğiniz, bir gölgelendiriciye gönderebileceğiniz ve her yürütme için aynı olan değişkenlerdir. Örneğin:
float r = 0.386;
float a = 26.6;
float xd_val = r*cos(0.0174532924*(a+0));
GLuint xd_id = glGetUniformLocation(pShaderProgram, "xd");
glUniform1f(xd_id, xd_val);
Bu hala, CPU üzerindeki sadece bir kez değeri hesaplar muntazam bir değişken olarak gölgelendirici programına iletir, ve gölgelendirici bunu recaulcating olmadan her yürütme değere erişebilir, ama yaprak İstediğiniz belgelerinizi buraya girin.
Üniforma en yaygın nesne geniş değerleri için kullanılır, IE bir alfa-değeri, phong Shader model için sahne ışıkları geçtikten vb
optimizasyon seviyesi ve derleyici bağlıdır, ancak montaj bakarak çalıştı vermedi ? – Vladp
sadece bir kere hesaplanmaya ihtiyaç duyuyorsanız, neden onları hesaplamıyor ve tek tip bir değişkene veya UBO'ya göndermiyorsunuz? – WearyWanderer
Aslında hesap makinemle hesaplayabilirim ve doğrudan xd, yd, xe, siz bu değerleri atardım - ancak derleyiciye güvenebiliyorsam, kodlamayı kendim belgeleme amacıyla bu durumda bırakmak isterim. – user1282931