首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >未调用NSOpenGLView drawRect

未调用NSOpenGLView drawRect
EN

Stack Overflow用户
提问于 2010-06-08 20:01:37
回答 1查看 1.1K关注 0票数 0

我目前正在尝试以编程方式创建一个简单的可可NSWindow,而不是使用接口构建器(我有这样做的理由)。这是一个快速测试:

代码语言:javascript
复制
   int main(int argc, char** argv){     
    NSWindow *mainwin;
    CocoaGLView *mainview;
    NSRect scr_frame;
    unsigned int style_mask;

    NSAutoreleasePool *pool =[[NSAutoreleasePool alloc] init];

    [NSApplication sharedApplication];

    scr_frame= NSMakeRect(100, 100, 400, 400);
    style_mask=NSClosableWindowMask|NSMiniaturizableWindowMask|
    NSResizableWindowMask|NSTitledWindowMask;

    scr_frame=[NSWindow contentRectForFrameRect:scr_frame
                                      styleMask:style_mask];

    mainwin=[[NSWindow alloc]
             initWithContentRect:scr_frame
             styleMask:style_mask
             backing:NSBackingStoreBuffered
             defer:NO];
    [mainwin makeKeyAndOrderFront:nil];
    [mainwin setTitle:@"Visible screen window"];

    mainview=[[CocoaGLView alloc] initWithFrame:scr_frame];
    [mainwin setContentView:mainview];
    [mainview display];

    [mainwin setReleasedWhenClosed:YES];

    [pool drain];
    [NSApp run];
    return 0;
}

CocoaGLView由NSOpenGLView派生而来,如下所示:

代码语言:javascript
复制
    @interface CocoaGLView : NSOpenGLView {
    //some stuff
}

- (id) initWithFrame: (NSRect) frameRect;

- (void)setFrameSize:(NSSize) aSize;
- (void)drawRect:(NSRect) aRect;

@end

它通常是有效的。我能看到窗户。我甚至可以看到我在CocoaGLViews drawRect函数中绘制的openGL内容,但不幸的是该函数只被调用一次,我错过了什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-06-09 00:12:33

为什么你希望它被多次调用呢?当操作系统认为视图的内容不再有效时,会要求绘制视图。如果您希望定期绘制OpenGL视图,则需要设置一个计时器,将setNeedsDisplay:消息发送到您的视图。

票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2997046

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档