在 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);