In March, 2010, the Khronos group approved an extension to add timers to OpenGL. The version was 3.2. As of OpenGL 3.3 this functionality has become part of the specification.
As mention in the Very Simple Profile Library page, profiling is an essential technique to truly understand how to improve the performance of an application. Being able to get time measurements is important both in the development stage as well as during run-time after the application has been released. OpenGL Timer Queries allows us to profile the GPU. i.e. to determine the amount of time it takes to execute a command, or sequence of commands in the GPU.
A tutorial is available in here describing the OpenGL timer functions, showing how to use them, and describing a double buffer approach to prevent the application from being stalled while waiting for query results.
VSPL new version. Added more timer options. Users can now select between the standard C clock function, Unix gettimeofday, Windows high performance timer, with QueryPerformanceCounter or system time, using GetSystemTime.
Optimization is a must in computer graphics applications, mainly in those devoted to real-time interaction, such as visualization and games. One possibility is to optimise everything that can be optimised, but this is in most cases a waste of time. There are segments in our applications that when optimised bring an overall gain in efficiency to our application, but this is not true for all segments.
VSPL, a component of the Very Simple * Libraries, brings a profiler which you can display on top of your application using OpenGL. There are no dependencies whatsoever, and the only requirement to display the profile report on top of the application is a function to display a string. In OpenGL you can use VSFL, another component of the Very Simple * Libraries.
gDEBugger – OpenGL and OpenCL Debugger, Profiler and Memory Analyzer.
A must have tool. It profiles your code using OpenGL with GLSL, showing the number of function calls, your data on the graphics hardware, shaders, uniforms, vertex data, … you name it. You can establish breakpoints at OpenGL functions and run it function by function, or frame by frame. It does not require any additions to your code, and even tells you if you’re calling deprecated functions.