私は2Dグラフィックスをフレームバッファにレンダリングするシンプルなゲームを持っています(OpenGLを使用していません)。クリーンなフレームレートを得るためにCVDisplayLinkを使用するつもりでしたが、Web上のほとんどの例はOpenGLやQuickTimeを扱っています。CVDisplayLinkコールバックの中からNSViewグラフィックスコンテキストに描画する方法は?
これまでのところ、私はNSViewののサブクラスがあります。
@interface GameView : NSView {
@private
CVDisplayLinkRef displayLink;
}
- (CVReturn)getFrameForTime:(const CVTimeStamp*)outputTime;
@end
をそして、私はCVDisplayLinkコールバック設定:
CVDisplayLinkSetOutputCallback(displayLink, MyDisplayLinkCallback, self);
をそして、私はコールバック関数を持っている:
私が立ち往生している部分は、getFrameForTime:
でGameViのグラフィックスコンテキストに描画することですew。通常、ビューの現在のコンテキストを作るdrawRect:
前に起こるいくつかのセットアップがある - 私の最初の推測がdrawRect:
- (CVReturn)getFrameForTime:(const CVTimeStamp*)outputTime
{
CGContextRef ctxCurrent = [[NSGraphicsContext currentContext] graphicsPort];
//.. Drawing code follows
}
しかしctxCurrent
にあなたが希望描くのと同じ方法を行うことだった私は、私は理解して考えるnil
です。私はこれが私が欠けている部分だと思う。私の見解の文脈をどうやって得るのですか?
または私はこれについてすべての間違った方法で行っていますか?
ありがとうございます、これは動作しており、これまでに私が見つけた最もクリーンなようです。 – John