首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Cocoa屏幕保护程序预览

Cocoa屏幕保护程序预览
EN

Stack Overflow用户
提问于 2012-05-07 21:40:16
回答 1查看 203关注 0票数 0

我对屏幕保护程序预览有一些问题。这是一个简单的OpenGL屏幕保护程序,清除BG到特定的颜色(图像上为紫色)。它必须用颜色填充全屏,在测试运行中也是如此,但在预览中我只看到了以下内容:

下面是一些代码:

代码语言:javascript
复制
- (void)initOpengl {
    [[openglView openGLContext] makeCurrentContext];
    glShadeModel(GL_SMOOTH);
    glClearColor(0.5f, 0.3f, 0.8f, 0.5f);

    glClearDepth(1.0f); 
    glEnable(GL_DEPTH_TEST);
    glDepthFunc(GL_LEQUAL);
    glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST);
}

- (void)resize:(NSSize)newSize {
    [openglView setFrameSize:newSize];

    [[openglView openGLContext] makeCurrentContext];

    glViewport(0, 0, (GLsizei)newSize.width, (GLsizei)newSize.height);
    glMatrixMode(GL_PROJECTION);
    glLoadIdentity();
    gluPerspective(30.0f, (GLfloat)newSize.width / (GLfloat)newSize.height, 
                   0.1f, 100.0f);

    glMatrixMode(GL_MODELVIEW);
    glLoadIdentity();
    [[openglView openGLContext] update];
    [self setNeedsDisplay:YES];
}

- (void)setFrameSize:(NSSize)newSize {
    [super setFrameSize:newSize];
    [self resize:newSize];
}
- (void)setFrame:(NSRect)frameRect {
    [super setFrame:frameRect];
    [self resize:frameRect.size];
}
- (void)drawRect:(NSRect)rect {
    [super drawRect:rect];

    [[openglView openGLContext] makeCurrentContext];
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
    glLoadIdentity();

    glFlush();
}

- (void)animateOneFrame {
    [self setNeedsDisplay:YES];
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-05-08 19:06:17

非常愚蠢的错误,问题解决了。我应该使用带有适当参数的openglView setFrame:...;而不是openglView setFrameSize:newSize

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

https://stackoverflow.com/questions/10483130

复制
相关文章

相似问题

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