【发布时间】:2015-01-07 15:44:34
【问题描述】:
我注意到一些在 opengl 文档中没有很好解释的事情。如果我错了,请纠正我。
如果程序不是当时 opengl 使用的程序,则无法设置制服的值。这会产生错误。
如果您在程序 A 中设置了制服的值,然后切换到程序 B,然后再切换回程序 A,则该值保持不变。这个靠谱吗?
无法为当时未使用的程序设置统一值。有解决办法吗?
【问题讨论】:
我注意到一些在 opengl 文档中没有很好解释的事情。如果我错了,请纠正我。
如果程序不是当时 opengl 使用的程序,则无法设置制服的值。这会产生错误。
如果您在程序 A 中设置了制服的值,然后切换到程序 B,然后再切换回程序 A,则该值保持不变。这个靠谱吗?
无法为当时未使用的程序设置统一值。有解决办法吗?
【问题讨论】:
Direct State Access extension(包含在核心 4.5 中)允许您使用 glProgramUniform*EXT 将统一设置为非绑定程序,您需要指定该程序。
制服按程序存储,
见 1
【讨论】:
glProgramUniform* 实际上是 OpenGL 4.1 中的核心(它是与GL_ARB_separate_shader_objects 一起引入的),并且在提供GL_EXT_direct_state_access 的旧实现中也可用。