2011-07-23 18 views
5

¿Hay algún tipo de modo de depuración en el que se pueda ejecutar OpenGL donde genera información en una consola? Tengo una aplicación que funciona bien en muchas máquinas, pero falla miserablemente en la máquina que realmente importa. No tengo acceso directo a esa máquina, así que estoy tratando de descubrir cómo está fallando. Actualmente no veo salida en la consola. Tenga en cuenta que la aplicación era originalmente una aplicación de Windows sin consola y la cambié a consola a través de las propiedades del proyecto. Además, si importa, algunos objetos no se muestran y otro está atascado y no se anima, lo cual no tiene ningún sentido para mí.Depuración de OpenGL o información detallada en la consola

Respuesta

7

No, realmente no. Tendría que escribir un enlace para OpenGL y registrar todas las llamadas que hace (que es lo que hacen las herramientas como gDEBugger) si realmente quiere un resultado detallado, pero eso requiere bastante trabajo (puede usar algo como GLIntercept para eso).) De la experiencia personal: lo más fácil será, probablemente, obtener acceso a la máquina en cuestión y ejecutar gDEBugger allí ... u obtener una máquina equivalente para que pueda reproducir el error con un depurador de gráficos adjunto.

Como alternativa, puede intentar usar la extensión ARB_debug_output que, en teoría, debería proporcionarle más resultados. En la práctica, todo lo que obtiene es una llamada glGetError después de cada llamada API OpenGL, que podría ser lo suficientemente buena para su caso de uso (es decir, simplemente hace algo que rompe el estado GL). Para usar la extensión de salida de depuración, debe modificar su aplicación para crear un contexto de depuración.

+1

La utilidad de ARB_debug_output depende de la implementación de OpenGL. NVIDIA básicamente hace la versión 'glGetError', pero la versión de AMD es bastante más útil. No simplemente regurgita "GL_INVALID_OPERATION" hacia ti; generalmente le dice información útil como la función que lo causó, etc. Lo he visto reconocer específicamente las llamadas a funciones obsoletas en un contexto central. Los errores de compilación y vinculación de Shader arrojarán los registros apropiados en caso de falla. Etcétera. –

+0

'ARG_debug_ouput' es parte de la especificación Core desde la versión' 4.3'. –

Cuestiones relacionadas