Я начинаю работать над редактором 3D-частиц и эволюционистом. Ive сделал что-то подобное в прошлом с OpenGL, но на этот раз я делаю приложение mac os x cocoa. У меня просто есть несколько вопросов относительно кода, который я использую при настройке OpenGL.Настройка непрерывного рендеринга в приложении mac osx для какао с использованием OpenGL
1) Почему я вижу много людей в Интернете, используя ...
[self setNeedsDisplay:YES];
Является ли это правильный способ, чтобы получить OpenGL для визуализации, теперь я понимаю, что это приводит к DrawRect называют, но это правильный путь?
2) Является ли drawRect правильным методом, я должен быть переопределяющим для моего метода рамки рамки?
Heres код, который я продолжаю работать в в Интернете:
-(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);
}
В настоящее время я расширяю NSOpenGLView. Что бы вы рекомендовали использовать программируемую трубопроводную линию OpenGL для рендеринга тысяч частиц в трехмерном пространстве? –
@JimmyBouker - Оба будут обрабатывать задачи рендеринга так же хорошо. Если вы когда-либо планируете что-то сделать поверх своего взгляда, CAOpenGLLayer сэкономит вам время. Если вам нужно многопоточное рендеринг, NSOpenGLView делает это немного проще. –
Большое спасибо зоопарку, у меня определенно будет многорежимный рендеринг, и я не буду ничего класть поверх своей поверхности. Благодарю Брэда –