Я начинаю работать над редактором и эволюционером системы частиц 3D. Я делал нечто подобное в прошлом с OpenGL, но на этот раз я делаю приложение Mac OS X Cocoa. У меня просто несколько вопросов относительно кода, с которым я продолжаю сталкиваться при настройке OpenGL.
1) Почему я вижу много людей в сети, использующих ...
[self setNeedsDisplay:YES];
Это правильный способ заставить OpenGL отображать, теперь я понимаю, что это приводит к вызову drawRect, но правильный ли это путь?
2) Является ли drawRect правильным методом, который я должен переопределить для метода рендеринга фрейма?
Вот код, с которым я продолжаю сталкиваться в сети:
-(void) prepareOpenGL {
[[self window] makeFirstResponder:self];
glClearColor(1.0f, 1.0f, 0.0f, 10.f);
NSTimer *timer = [NSTimer timerWithTimeInterval:1.0/60.0 target:self selector:@selector(idle:) userInfo:nil repeats:YES];
[[NSRunLoop currentRunLoop] addTimer:timer forMode:NSDefaultRunLoopMode];
}
-(void)idle:(NSTimer *)timer {
if(![[NSApplication sharedApplication] isHidden])
[self setNeedsDisplay:YES];
}
-(void) drawRect:(NSRect)dirtyRect {
glClear(GL_COLOR_BUFFER_BIT);
}