我已经设法实现了 OpenGL 调试上下文(太棒了,终于!),大多数事情看起来都很好,但是我看到了一个性能警告,我无法找到很好的信息。
[ 0.0330 - 388.6340] OpenGL Version: 4.2.0 Quadro 600/PCIe/SSE2 NVIDIA Corporation
[ 0.0000 - 549.1920] OpenGL: Program/shader state performance warning: Fragment Shader is going to be recompiled because the shader key based on GL state mismatches. [source=API type=PERFORMANCE severity=MEDIUM id=131218]
我确实明白,自从我上次编译着色器以来,它与 OpenGL 状态的变化有关。
我们有四个着色器,它们在上下文之间共享的纹理上运行,错误信息仅在创建新上下文后显示。因此,上下文创建可能会改变 OpenGL 状态机的状态。是否有可能甚至不可能解决它,因为每个上下文都以自己的“干净”状态机开始?
这可能没什么大不了的,因为它只发生在上下文创建时,但我们正在运行许多上下文(同时至少最多 15 个)所以看看我是否能够修复警告会很有趣并一劳永逸地摆脱它。