У меня есть класс контроллера представления, который анализирует кадры клипа и отображает его в NSOpenGLView. Проблема в том, что визуализируемые кадры нестабильны, так как кажется, что контроллер представления указывает представлению рисовать быстрее, чем он мог бы обработать. См. Фрагмент кода ниже для справки:
// Snippet code from view controller
- (void) tellViewToDrawWithFrameAtTimeInterval:(float)timeVal
{
_myGlobalTimer = [NSTimer scheduledTimerWithInterval:timeVal
target:self
selector:@selector(triggerRenderAtTime)
userInfo:nil
repeats:YES];
}
- (void) triggerRenderAtTime
{
[_myView setPixelData:[_myPixelBuffer objectAtIndex:_frameIndex];
[_myView setNeedsDisplay:YES];
_frameIndex++;
}
// The NSTimer object is eventually killed elsewhere in the class' implementation
Я даже пытался установить таймер на вызов с интервалами 3, 5, 10 секунд, чтобы убедиться, что у представления есть время, чтобы обработать все и отобразить кадр. Тем не менее, наблюдаемые результаты были все те же - вид все еще пропускает кадры, которые он должен рисовать. В настоящее время я смотрю на CVDisplayLink, но я очень незнаком с тем, что они еще делают, и, исходя из того, что я прочитал до сих пор, кажется, что это сложное решение в противном случае простой проблемы ( Я думаю, ... ). Кто-нибудь может пролить свет на это? Спасибо!