Skip to content

dtrebilco/glintercept

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

30 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

GLIntercept

About

GLIntercept is a OpenGL function call interceptor for Windows that will intercept and log all OpenGL calls.

Binaries

Binaries of releases can be downloaded here

Basic usage

Select the version of GLIntercept right for the application being debugged (x86 or x64)

Note: You select the version of GLIntercept based on if the application is x86 or x64 (64bit) - not if the operating system is 64 bit.

Synergy Note: GLIntercept uses key presses when doing some logging / debugging. The software Synergy conflicts with the key reading - so disable Synergy when using these features of GLIntercept.

Then after installation, simply copy the opengl32.dll and a gliConfig.ini file from the install directory to the executable folder of the application you want to intercept OpenGL calls.

Then edit the gliConfig.ini file, enable the options required and then run the application.

How it works

GLIntercept works by overriding the call to wglGetProcAddress, wrapping the real function pointer in some assembly and then returning it to the application being debugged.

This means that when new OpenGL extensions/versions are released, GLIntercept will automatically log the new functions.

However, while all function names are automatically logged, function parameters need to be specified. These are supplied via text files in a "C" style syntax that can be updated as needed.

eg. void glClearColor( GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha );

History

GLIntercept has existed since 2003 and was mainly designed as an OpenGL 1.0-2.1 debugger. So while basic function logging should work on all OpenGL versions, the more advanced features listed below may or may not work in OpenGL 3.0+. (especially when using a core OpenGL profile)

Features

Main GLIntercept features:

  • Save all OpenGL function calls to text or XML format with the option to log individual frames.
  • Activate and log ARB_debug_output/GL_KHR_debug messages to the log
  • Run time shader edit. Display shader usage and edit the shaders at run time. Supports ARB VP/FP/GLSL and NV VP/FP
  • Free camera. Fly around the geometry sent to the graphics card and enable/disable wireframe/backface-culling/view frustum render.
  • Save and track textures. (1D,2D,3D,NVRect and p-buffer bound textures are supported.) Saving can be to TGA,PNG and JPG formats.
  • Save and track shaders/programs.
  • Save and track display lists.
  • Saving of the OpenGL frame buffer (color/depth/stencil) pre and post render calls. The ability to save the "diff" of pre and post images is also available.
  • Track error states (logging them to the debugger output) and breaking on errors.
  • Basic thread error checking.
  • Function timer log.
  • Resource leak tracking for contexts, display lists, shaders and textures.
  • OpenGL extension/version override. Add/remove/replace the OpenGL extension and version strings. (Test lower end rendering paths without changing cards)
  • OpenGL function stats - how many times each function is called.

License

Note Older versions of GLIntercept were licensed under the GPLv2. Newer versions (1.0+) are MIT licensed.

Links

Similar OpenGL tools to GLIntercept are:

OpenGL ES / OpenVG tracing

Direct3D