私は3Dパーティクルシステムエディタとエボルバーで作業を開始しています。私は過去にOpenGLと似たようなことをしましたが、今回はMac OS Xのココアアプリケーションを作っています。私は、OpenGLをセットアップする際に実行し続けるコードに関するいくつかの質問があります。私が使用してWeb上で多くの人々を参照してくださいなぜOpenGLを使用してMac OS Xのココアアプリケーションで連続レンダリングを設定する
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);
}
私は現在NSOpenGLViewを拡張しています。 OpenGLのプログラム可能なパイプラインを使用して、3D空間で何千もの粒子をレンダリングすることをお勧めしますか? –
@JimmyBouker - 両方とも同様にレンダリングタスクを処理します。あなたの視点の上に何かを敷くことを計画しているなら、CAOpenGLLayerはあなたの時間を節約します。マルチスレッドレンダリングが必要な場合は、NSOpenGLViewを使用すると少し楽になります。 –
動物園ありがとう、私は間違いなくマルチスレッドレンダリングがあり、私は自分の表面の上に何かを敷くことはありません。ありがとうブラッド –