Here's the GL extension for timer queries: EXT_timer_query
You can use glGenQueries to create a large number of query objects ahead of time and put them into a big list/pool. On the frame you want to profile, grab one query object ID from this list for each object that you draw in your scene, and wrap that object's draw calls in a glBeginQuery/glEndQuery. Record the query ID that you used in another list along with the object's name.
Next frame, use glGetQueryObject* to retrieve the results from those timer queries. Then print the information to a file, including the object names and the time taken by each.
I output my data in chrome tracing format, so I can view it in the chrome tracing tool
p.s. this is great for CPU profiling too: http://i.imgur.com/Aym7sd0.png
p.p.s. the screenshots of your game are looking great
Edited by Hodgman, 26 May 2014 - 07:22 PM.