#iphone #objective-c #ios #objective-c
#iPhone #objective-c #iOS #objective-c
Вопрос:
У меня есть приложение, в котором я получаю потоковые данные через Bluetooth, и я хотел бы отобразить потоковые данные в изображении. Данные представляют собой просто значения RGB (0-255 для RGB). На C # это работает нормально, но у меня возникли проблемы с выполнением того же самого на iphone. В C # это реализуется в виде очереди. Когда поступает новая строка данных, я удаляю из очереди пиксели в одну строку, а затем ставлю в очередь новую строку пикселей. Затем я записываю очередь в массив пикселей изображения. Казалось, что это будет быстрее, чем считывать все изображение, сдвигать его, добавлять новые данные, а затем записывать массив пикселей. В C # есть метод, который позволяет мне преобразовать очередь в массив, поскольку очередь не будет иметь непрерывной памяти. Мой вопрос в том, есть ли более быстрый способ сделать это, чем вручную повторно заполнять массив из очереди? Или есть более быстрый способ, чем использование очереди? Изображение нужно только сдвинуть вниз на X количество пикселей, затем записать X количество новых пикселей в пустое место на изображении. В любом случае, я не могу понять, как преобразовать очередь в массив, поскольку единственный способ получить доступ к чему-либо, кроме первого значения, — это удалить значения из очереди. Есть предложения?
Комментарии:
1. вы запрашиваете оптимизированную версию C # описанного вами шаблона или вы запрашиваете реализацию Objective C ?
2. реализация objective-c или objective-c .
Ответ №1:
Узким местом на устройствах iOS будет не преобразование очереди в массив, а получение массива растровых изображений в памяти дисплея устройства (изображения или текстуры). Этот путь можно оптимизировать, используя плиточный слой и обновляя пиксели только в конце конечных плиток. Затем вы можете прокручивать плиточный слой внутри прокрутки, чтобы выровнять последние потоковые данные.
Комментарии:
1. Я никогда раньше не использовал плиточные слои. Есть ли у вас какие-либо ссылки, показывающие, как это использовать? На веб-сайте разработчика Apple есть два примера, но всегда полезно иметь больше.
2. Если вы хотите использовать OpenGL: На последнем WWDC в GL talk обсуждались новые функции, доступные для совместного использования памяти с графическим процессором … может помочь, если вы хотите еще большей производительности.