- Many texture manipulations need to be done in linear space, e.g. anti aliasing and light manipulations.
- Many tools, like Photoshop, save pictures in non-linear format by default.
- You can specify SRGB as a bitmap format (e.g. GL_SRGB in OpenGL to glTexImage2D), and the graphic drivers (or the hardware?) will automatically transform the bitmap you sample from non-linear to linear.
- If you transform it yourself, you do that by setting each color component to c^2.2. This would be an approximation of the SRGB.
- You can transform each color channel independently on the others.
- As a last step, outputting the pixels to the screen, you need to transform it back into non-linear space, using c^(1/2.2) for each channel.
- The value 2.2 depends on the display you use. It looks like Apple use 1.8.
Is the approximation above good enough, for showing pixels on the screen? Or is it that the exact SRGB encoding need to be used?
Is there any automatic support in the hardware for the final pixel transformation to show on screen?
In most example and tutorials "out there", you don't find any gamma correction being done. So either I don't understand this, or there is a general lack of understanding elsewhere (or something in between :-).