gpt4 book ai didi

OpenGL为什么取消选择着色器程序?

转载 作者:行者123 更新时间:2023-12-05 01:19:32 24 4
gpt4 key购买 nike

这个问题在这里已经有了答案:




9年前关闭。




Possible Duplicate:
Is glDisableClientState required?



在 OpenGL 中,我经常看到遵循这种模式的代码:
glUseProgram(prog_id);
// ... do some stuff
glUseProgram(0);

我了解 glUseProgram(0)取消选择任何着色器程序。现在我的问题是取消选择着色器程序意味着什么?

例如,为什么我应该或不应该在渲染循环中做这样的事情?
while(render_loop_condition)
{
glUseProgram(prog_id);
// do some stuff
}
// various cleanup code
glUseProgram(0);

在使用多个着色器程序的渲染循环中,我可以做这样的事情吗:
while(render_loop_condition)
{
glUseProgram(prog_id1);
// do some stuff
glUseProgram(prog_id2);
// do some other stuff
}
// various cleanup code
glUseProgram(0);

最佳答案

它用于避免对之后绘制的内容产生任何意外的副作用。在方法内的程序之间切换是非常好的(在我看来,更可取),但在方法的末尾选择默认程序( 0 )。这样你在调用该方法后就不会遇到任何奇怪的副作用。

没有太多我能想到的副作用,但我想如果你以固定功能的方式绘制一些东西,你会不小心用你绑定(bind)的最后一个程序来绘制。

请注意,使用您发布的第二个代码块,您可以移动第一个 glUseProgram在 while 循环之外调用以防止多次绑定(bind)同一个程序。

关于OpenGL为什么取消选择着色器程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12774312/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com