如果我寫在Mac OS X或iPhone OS核心圖形繪製代碼,我可以通過調用活動的填充顏色設置爲紅色:混合色彩空間有沒有懲罰? (核芯顯卡)
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呃,這個功能不是簡單地調用RGB方法,強度值被複制三次;而是將上下文的顏色空間從DeviceRGB更改爲DeviceGray。下一次調用RGB方法將切換回來。
我很好奇,想知道:
- 有什麼處罰切換色彩空間?
- 當你的上下文的顏色空間與你的設備的本地色彩空間不匹配時,是否會有一個懲罰? (即在DeviceGray與DeviceRGB中繪圖)
我在問技術好奇心,而不是過早優化的願望,所以請保持警惕到最低限度。
不知道它是否更快,但不能通過構建一個測試它的測試項目來測試它嗎?一次運行將通過始終使用相同的色彩空間來測試填充,另一次將在色彩空間之間切換。我猜測如果存在懲罰,它會將顏色值從顏色空間轉換爲位圖的顏色空間,但測試之間的差異可以忽略不計。 – lucius 2010-02-10 06:36:21
是的,在這一點上,我計劃在有空的時候寫一些測試代碼。我正在等待首先獲得Tumbleweed徽章,但看起來我的問題並不令人感興趣。 – benzado 2010-02-10 19:49:31