Мне удалось реализовать OpenGL Debug Contexts (удивительный, наконец!), и большинство вещей выглядит хорошо и хорошо, но я вижу предупреждение о производительности, что я не могу найти хорошую информацию.
[ 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 из них одновременно), поэтому было бы интересно узнать, могу ли я исправить предупреждение и избавиться от него раз и навсегда.