【问题标题】:Opengl uniform behaviourOpengl 统一行为
【发布时间】:2015-01-07 15:44:34
【问题描述】:

我注意到一些在 opengl 文档中没有很好解释的事情。如果我错了,请纠正我。

  1. 如果程序不是当时 opengl 使用的程序,则无法设置制服的值。这会产生错误。

  2. 如果您在程序 A 中设置了制服的值,然后切换到程序 B,然后再切换回程序 A,则该值保持不变。这个靠谱吗?

  3. 无法为当时未使用的程序设置统一值。有解决办法吗?

【问题讨论】:

    标签: c++ opengl glsl shader


    【解决方案1】:
    1. Direct State Access extension(包含在核心 4.5 中)允许您使用 glProgramUniform*EXT 将统一设置为非绑定程序,您需要指定该程序。

    2. 制服按程序存储,

    3. 见 1

    【讨论】:

    • 顺便说一下,glProgramUniform* 实际上是 OpenGL 4.1 中的核心(它是与GL_ARB_separate_shader_objects 一起引入的),并且在提供GL_EXT_direct_state_access 的旧实现中也可用。
    猜你喜欢
    • 1970-01-01
    • 2016-02-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-18
    • 1970-01-01
    相关资源
    最近更新 更多