I’m trying to do GPGPU on Linux/NVidia/Cg using single channel floating point textures. I can initialize the texture just fine using glTexImage2D and then use a Cg fragment program to compute. However when I use glReadPixels the results are clamped to [0,1]. Is there a way to read negative and unclamped values from the framebuffer? If I use glCopySubImage2D will I get the unclamped values in the destination texture?
Most likely I could rescale these values by subtracting 0.5 and rescaling to some value range but this seems like a lot of extra computation.
Is there anyway around this, without using pbuffers or framebuffer objects?