tengo saber que descargar como actualizar opengl opengl-3

saber - opengl intel



OpenGL Debug Context performance warning (2)

Logré implementar OpenGL Debug Contexts (¡alucinante, finalmente!) Y la mayoría de las cosas parecen estar bien y bien, pero veo una advertencia de rendimiento en la que no puedo encontrar buena información.

[ 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]

Entiendo que tiene algo que ver con el cambio en el estado de OpenGL desde la última vez que compilé el sombreador (es).

Lo que tenemos es cuatro sombreadores que se ejecutan en una textura que se comparte entre los contextos, y la información de error solo aparece después de que se ha creado un nuevo contexto. Entonces, tal vez la creación del contexto altera el estado de la máquina de estado OpenGL. ¿Es posible que sea incluso imposible evitarlo, porque cada contexto comienza con su propia máquina de estado "limpia"?

Probablemente no sea un gran problema, ya que solo ocurre en la creación de contexto, pero estamos ejecutando muchos contextos (al menos hasta 15 de ellos al mismo tiempo), por lo que sería interesante ver si soy capaz de corregir la advertencia. y deshacerse de él de una vez por todas.


A partir de la poca información que he podido encontrar , NVIDIA quiere un poco de tu estado OpenGL en el momento de la compilación del sombreador para que coincida con el estado cuando el sombreador está vinculado y se utiliza para el renderizado.

Personalmente, hasta que obtengamos más información, simplemente filtraré este mensaje en particular en mi función de devolución de llamada de depuración:

static void CALLBACK DebugCallback(GLenum source, GLenum type, GLuint id, GLenum severity, GLsizei length, const GLchar *message, GLvoid *userParam) { // Suppress some useless warnings switch(id) { case 131218: // NVIDIA: "shader will be recompiled due to GL state mismatches" return; default: break; } // Print/handle message as usual }


Me deshice de ese mensaje al llamar a glUseProgram (0) después de terminar de dibujar alguna geometría, de lo contrario, el próximo glUseProgram () con un programId habría desencadenado ese mensaje.