OpenGL uniform的行为

3
我注意到在OpenGL文档中有一些未被很好解释的细节。如果我有错,请纠正我。
  1. 如果OpenGL当前没有使用该程序,则无法设置uniform的值,这会生成一个错误。

  2. 如果您在程序A中设置了uniform的值,然后切换到程序B,再切换回程序A,该值将保留。这可靠吗?

  3. 当前没有办法设置未被使用的程序的uniform值,是否有解决方法?

1个回答

5
  1. 直接状态访问扩展(包含在核心4.5中)允许您使用glProgramUniform*EXT将uniform设置为未绑定程序,并且您需要指定程序。

  2. uniform存储在每个程序中,

  3. 见1


1
顺便提一下,glProgramUniform* 实际上是 OpenGL 4.1 的核心功能(它是与 GL_ARB_separate_shader_objects 同时引入的),并且也可在提供 GL_EXT_direct_state_access 的旧实现中使用。 - Andon M. Coleman

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接