Сдвиг пикселей изображения в объекте-c / объекте-с ++

У меня есть приложение, в котором я получаю потоковые данные через Bluetooth и хочу отображать потоковые данные в виде изображения. Данные представляют собой просто значения RGB (0–255 для RGB). Он отлично работает на C #, но у меня проблемы с тем, чтобы сделать то же самое на iphone. В C # это реализовано в виде очереди. Когда поступает новая строка данных, я удаляю из очереди пиксели на одну строку, а затем помещаю в очередь новую строку пикселей. Затем я записываю очередь в массив пикселей изображения. Казалось, что это будет быстрее, чем читать все изображение, сдвигать его, добавлять новые данные и затем записывать массив пикселей. В C # есть метод, который позволяет мне преобразовывать очередь в массив, поскольку очередь не имеет непрерывной памяти. У меня вопрос: есть ли более быстрый способ сделать это, чем вручную заполнить массив из очереди? Или есть более быстрый способ, чем использование очереди? Изображение нужно только сместить вниз на X пикселей, а затем записать X новых пикселей в пустое место на изображении. В любом случае я не могу понять, как преобразовать очередь в массив, поскольку единственный способ получить доступ к чему-либо, кроме первого значения, - это снять значения из очереди. Какие-либо предложения?


person Davido    schedule 12.04.2011    source источник
comment
вы просите оптимизированную версию C # описанного вами шаблона или реализуете Objective C ++?   -  person Till    schedule 13.04.2011
comment
Реализация target-c или objective-c ++.   -  person Davido    schedule 13.04.2011


Ответы (1)


Узкое место на устройствах iOS будет заключаться не в преобразовании очереди в массив, а в передаче массива растровых изображений в память дисплея устройства (изображения или текстуры). Этот путь можно оптимизировать, используя мозаичный слой и обновляя только пиксели в конце конечных плиток. Затем вы можете прокрутить мозаичный слой внутри прокрутки, чтобы выровнять последние потоковые данные.

person hotpaw2    schedule 12.04.2011
comment
Я никогда раньше не использовал плиточные слои. У вас есть ссылки, которые показывают, как им пользоваться? На веб-сайте разработчика Apple есть два примера, но всегда полезно иметь больше. - person Davido; 13.04.2011
comment
Если вы хотите использовать OpenGL: на последнем WWDC в докладе GL обсуждались новые функции, доступные для совместного использования памяти с графическим процессором ... могут помочь, если вы хотите еще большей производительности. - person nielsbot; 31.10.2012