Если я пишу код рисования в Core Graphics на Mac OS X или iPhone OS, я могу установить активный цвет заливки на красный по телефону:Есть ли штраф за смешение цветовых пространств? (Core Graphics)
CGContextSetRGBFillColor(context, 1.0, 0.0, 0.0, 1.0); // RGB(1,0,0)
Если я хочу 50% серого, Я мог вызов:
CGContextSetRGBFillColor(context, 0.5, 0.5, 0.5, 1.0); // RGB(0.5,0.5,0.5)
Но для оттенков серого заманчиво, чтобы сделать более короткую линию и называют:
CGContextSetGrayFillColor(context, 0.5, 1.0);
Howev er, эта функция НЕ просто вызывает метод RGB со значением интенсивности, скопированным три раза; вместо этого он меняет цветовое пространство контекста с DeviceRGB на DeviceGray. Следующий вызов метода RGB переключит его обратно.
Мне интересно знать:
- Что штраф за переключение цветовых пространств?
- Есть ли штраф за рисование, если цветовое пространство вашего контекста не соответствует собственному цветовому пространству вашего устройства? (То есть, втягивая DeviceGray против DeviceRGB)
Я спрашиваю из технического любопытства, а не желание преждевременно оптимизировать, поэтому, пожалуйста, держите ваши увещевания к минимуму, пожалуйста.
Не знаю, будет ли это быстрее, но разве вы не можете его протестировать, построив тестовый проект, который проверяет это? Один прогон будет тестировать заполнение с использованием того же цветового пространства все время, а другой будет переключаться между цветовыми пространствами. Я бы предположил, что если есть штраф, он преобразует значения цвета из вашего цветового пространства в цветовое пространство растрового изображения, но разница будет незначительной между тестами. – lucius
Да, в этот момент я планирую написать некоторый тестовый код, когда у меня есть время. Сначала я ждал, чтобы получить значок Tumbleweed, но похоже, что мой вопрос не совсем неинтересен. – benzado