Display colorsync profile remains unapplied?
Chris Murphy
lists at colorremedies.com
Tue Mar 20 22:37:23 PDT 2007
On Mar 21, 2007, at 12:48 AM, Christopher Hunt wrote:
> It is my application which is heavily OpenGL based using Cocoa as a
> shell (NSOpenGLView). No specific colour profile management going
> on within the app.
OK well you don't get color management for free with the OS. If
you're using Quartz, you have to specify a source profile for the
data to display, and most vendors use (incorrectly) the current
display profile, which then causes a null transform to occur and no
color management. If you're using only OpenGL, I'm not sure if OpenGL
is even remotely aware of what ICC profiles are. If it is, you
probably have to explicitly tell it what color space to use as source
(something other than the display profile) and as destination
(display profile).
So it's virtually certain that the display profile is not affecting
anything in your application. Any change you see on screen is
strictly due to the Display Manager seeing the vcgt tag in the
various display profiles you pick, and are applying the curve in that
tag to the the LUT in the video cards. Unless there's some bug
somewhere, the two LUTs in the card for the display is set the same
since you have set the same profile for both displays. And so chances
are the two displays just behave differently.
You either need to compel the two devices to behave the same somehow,
or use an application such as the Default Calibrator to make tone
adjustments (per channel perhaps) to make the two LUTs different and
thereby compel two different displays to behave closer to each other.
Ultimately, if their RGB primaries are simply different, tone
correction won't be enough, you'll have to do color space transforms.
To do that, you need to know the primaries for the two displays and
the tone response for each channel for each display - i.e. build an
ICC display profile for each display based off actual display
behavior. That's easy enough to do. Getting OpenGL to use them may
not be.
Now, you could cheat a little and tell your app to use no
transformation for display 1; but to use display profile 1 as source
and display profile 2 as destination for display 2 (transformation).
Ideally you'd plot the gamut of both displays and find the one that's
the lowest common denominator and make that the display that gets no
transform since the display with the larger gamut can more
effectively simulate the display with smaller gamut.
Chris Murphy
Color Remedies (TM)
New York, NY
----------------------------------------------------------------------
Co-author "Real World Color Management, 2nd Ed"
More information about the MacOSX-admin
mailing list