Rysowanie obrazu za pomocą CoreGraphics na iPadzie Retina jest powolne
W mojej aplikacji na iPada renderuję mapę bitową poza ekranem, a następnie rysuję mapę bitową na ekranie. (To dlatego, że chcę ponownie użyć istniejącego kodu renderowania bitmapy.) Na iPadzie 2 działa to jak urok, ale na nowym iPadzie z wyświetlaczem Retina rysowanie bitmapy jest naprawdę powolne, mimo że jej rozdzielczość nadal jest podobnie.
Aby narysować bitmapę, używamy zwykłych funkcji Quartz 2D:CGImageCreate
z dostawcą danych utworzonym przezCGDataProviderCreateWithData
, 32-bitowy format RGBA zkCGImageAlphaNoneSkipLast
. wUIView
wyświetla bitmapę wdrawRect:
, UżywamyCGContextDrawImage
aby narysować go do kontekstu zwróconego przezUIGraphicsGetCurrentContext
.
Zauważ, że nawet nie próbuję rysować z podwójną rozdzielczością: na razie mam taką samą rozdzielczość, jak w przypadku iPada 2. Wygląda na to, że CoreGraphics wewnętrznie podwaja piksele, a następnie wysyła je do GPU , nawet jeśliCGImage
to, co robię, powinno być odpowiednie do bezpośredniego przekazania do GPU. Jakieś pomysły?