GLIntercept 1.0 Beta

A beta release of GLIntercept 1.0 is now out at:

A few things to note:

  • This is more a maintainable release - new function entry points and some minor bug fixes.
  • OpenGL3.0 + pure core profiles do not work correctly (will be fixed)
  • New resource types like array textures, geometry shaders etc are not currently logged.
  • No x64 bit program support.
  • Nvidia’s multi threadded driver seems to issue an internal wglGetPixelFormat call on the first glGetError() after SwapBuffers. This internal call occurs on a different thread that does not have the main OpenGL conext - so it results in the OpenGL error:
    “GL ERROR - Function wglGetPixelFormat generated error GL_INVALID_OPERATION”
    for the first 23 times swap buffers is called.
    To fix, disable the multi-threadded driver from the Nvidia control panel:
    “Manage 3D settings -> Threadded Optimization -> Off”
    or you can enable the GLIntercept option “ThreadChecking = True” which will report the extra wglGetPixelFormat call occuring on a different thread. (as well as some other wglDescribePixelFormat calls made by the driver)

I will probably do a few more betas before the final, so hopefully a few of the above features/fixes will make it in.

As there are so many other OpenGL loggers on Windows these days I will probably not do too many more updates. (and OpenGL is a hard API to write a debugger for)

Let me know of any bugs you encounter.


Great! I use to use it few years back, it would be great to have it working for OpenGL 3.2 :smiley:

Maybe this should be in the Toolkits forum instead.

GLIntercept is one of my favourite GL Tools!

Thank you for working on it again!

As there are so many other OpenGL loggers on Windows these days I will probably not do too many more updates.

If you do decide to abandon it, could you at least document the code more thoroughly before you do? I took a cursory glance at the code once (to see what it would take to upgrade it to GL 3.x), and I couldn’t figure out what was going on with the inline assembly.

The only asm in the 0.5 src is the “#define WRAPPER_FUNCTION(n)” macro.
Here’s what it does:

int WrapperCall777(){ // notice "int" instead of "void"
	int idx = wrapperIndex[777];
	PROC extFunction = extFunctions[777]; // pointer to a function

	int result = extFunction(ALL_MY_ARGS); // arguments will automatically be correctly presented to it
	return result;

// At initialization, i.e this was done:
// extFunctions[777] = glUniformMatrix2x4fv;

Great work!!! I’ll check new version as soon as I can.

Great news and great work ! I’m using GLintercept 0.5 since it’s been out, and I’m fond of it !

Just saw this post, so could not test the v1.0 beta, does it include source code, or do you plan to use the googlecode svn ? It would be great that your great tool continues to live ‘after you’ :slight_smile:

Once more, great work and many thanks :slight_smile:

I’ll release source code for the final 1.0 release.

If you are curious, a source version that is almost the same is at

SVN is a possibility if other people start working on it. (have one other potential contributor)

I made a quick test on a huge app of ours and it certainly worked fine!

I have two points I’d like to improve :

  • shader edit mode can’t show shader usage if the framebuffer has sRGB enabled
  • shader editor can’t always recompile correctly programs that linked fro multiple shaders - as it recombines them in a single source, there may be duplicated uniform definitions or misplaced #version statements

these points could make a first contribution if you think it’s not’ too ambitious as a starting point :slight_smile: i did not look at the source code for now, so i’m clueless for now