Я работаю над приложением, которое рисует на экране на основе информации, полученной по сети. Моя проблема в том, что иногда эти события происходят со скоростью выше, чем я могу рисовать, и я испытываю задержку. Теперь проблема заключается не в задержке с типом задержки, которая накапливается. Если бы я рисовал на основе таких событий, как щелчок мышью, и перетаскивание этого не происходит, и я предполагаю, что это связано с тем, как события доставляются. Как я мог узнать, когда представление «готово» сделать снова, потому что тогда я мог отказаться от некоторых событий, полученных по сети, и нарисовать только самые последние.Проблемы с рисованием какао
Прямо сейчас у меня есть прозрачное окно, находящееся «сверху» иерархии окон. Im рисунок на NSImage, который является размером экрана после каждой операции рисования. Я делаю setneedsdisplayinrect вызов представления, в котором происходит рисунок. Когда я получаю вызов, я рисую часть изображения, которое входит в грязный прямоугольник. Моя попытка решить это немного взломать, так как я не знаю другого способа сделать это. Я устанавливаю значение Boolean в true после каждого setneedsdisplayinrect, и я устанавливаю его false в drawrect. Если я получу последующее событие для рисования на изображении, я просто проигнорирую его значение Boolean, равное true.
Какие еще альтернативы делать это у меня есть?
Я думал об использовании cashapelayers и изменении пути, но я не уверен, насколько эффективны слои формы, когда путь становится большим. Я также подумал о том, чтобы использовать несколько слоев формы для разных частей пути, которые разделены (не непрерывны), но если я хочу очистить чертеж, и я удаляю слои, если их много, я заметил немного ботов производительности. Единственный другой способ, которым я мог подумать, - это рисовать с открытым gl, но, учитывая природу представления OpenGL (размер экрана и прозрачность), я не уверен, насколько это будет проблемой производительности.
Любые советы были бы весьма признательны.
Спасибо.