Tôi có một trò chơi đơn giản làm cho đồ hoạ 2D thành bộ đệm khung (không sử dụng bất kỳ OpenGL nào). Tôi sẽ sử dụng một CVDisplayLink để có được một khung hình sạch sẽ, tuy nhiên hầu hết các ví dụ về thỏa thuận web với OpenGL hoặc QuickTime.Làm thế nào để vẽ một bối cảnh đồ họa NSView từ bên trong một cuộc gọi lại CVDisplayLink?
Cho đến nay tôi có một lớp con của NSView:
@interface GameView : NSView {
@private
CVDisplayLinkRef displayLink;
}
- (CVReturn)getFrameForTime:(const CVTimeStamp*)outputTime;
@end
Và tôi thiết lập callback CVDisplayLink:
CVDisplayLinkSetOutputCallback(displayLink, MyDisplayLinkCallback, self);
Và tôi có chức năng gọi lại:
Phần mà tôi đang mắc kẹt là phải làm gì trong getFrameForTime:
để vẽ đến bối cảnh đồ họa trong GameVi ew. đoán đầu tiên của tôi là phải làm bản vẽ giống như cách bạn sẽ trong drawRect:
- (CVReturn)getFrameForTime:(const CVTimeStamp*)outputTime
{
CGContextRef ctxCurrent = [[NSGraphicsContext currentContext] graphicsPort];
//.. Drawing code follows
}
Nhưng ctxCurrent
là nil
mà tôi nghĩ tôi hiểu - thường có một số thiết lập điều đó xảy ra trước khi drawRect:
mà làm cho cái nhìn của bạn bối cảnh hiện nay. Tôi nghĩ đây là phần tôi đang thiếu. Làm thế nào để có được bối cảnh cho quan điểm của tôi?
Hoặc tôi sẽ thực hiện điều này theo mọi cách sai?
Cảm ơn, điều này có hiệu quả và dường như là sạch nhất mà tôi đã tìm thấy từ trước tới nay. – John