I’d like some opinions on the fastest way to find the average color of a single channel 16 bit float rectangular pbuffer on the 6800 series cards.
My first thought was to use GL_GENERATE_MIPMAP_HINT_SGIS and then glGetTexImage to get the smallest mipmap, but it looks like the auto mipmap generation is incompatible with the rectangular textures. Or maybe I was doing something else wrong?
Next I tried glCopyTexSubImage2D to copy this pbuffer to a 2D 16 bit float texture with GL_GENERATE_MIPMAP_HINT_SGIS enabled, but the copy call is quite slow (maybe 1 frame per second). I couldn’t find a format for the 2D texture that would make it fast either. Maybe it’s slow because auto-mipmapping of 16 bit float textures is not enabled in hardware yet? These 2 threads seem to contradict eachother on the issue:
http://www.opengl.org/discussion_boards/cgi_directory/ultimatebb.cgi?ubb=get_topic;f=3;t=012490
http://www.opengl.org/discussion_boards/cgi_directory/ultimatebb.cgi?ubb=get_topic;f=3;t=012762
There is a small constraint in that I can’t modify the main screen-size pbuffer itself during this operation, so is my only option to make 2 more 16 bit pbuffers of 1/2 and 1/4 the size of the original and start ping ponging until I have only 1 pixel? I’d like to avoid this option as it is not very elegant, but if it’s my only option…
Thanks