[英]How do I set uniform mat4 in GLSL shader using sf::Shader::setUniform?
[英]Do uniform values remain in GLSL shader if unbound?
我正在編寫一個程序,該程序對不同的圖元使用兩種不同的着色器。 我的問題是:如果我綁定一個程序,向它發送統一變量,然后使用另一個着色器程序並返回到第一個,傳遞的統一值會保留嗎? 這是一些偽代碼:
glUseProgram(shader1);
glUniform(shader1,...);
//stuff
for(elements in a list) {
if(element.type = 1) {
glUseProgram(shader2);
element.draw();
} else {
glUseProgram(shader1); //Here, do the uniforms from above remain, if shader2 was bound before?
element.draw();
}
}
是的,制服是特定於某個程序的,如果您解除綁定並重新綁定它,它就會持久存在。
此外,如果您願意,您可以在該示例中使用glGetUniform輕松驗證這一點。
2.11.7 統一變量
...制服是程序對象特定的狀態。 一旦加載,它們就會保留它們的值,只要程序對象被使用,只要程序對象沒有被重新鏈接,它們的值就會恢復。 ...
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.