2012-05-07 10 views
0

스크린 세이버 미리보기에 문제가 있습니다. 이것은 특정 컬러 (보라색 이미지)에 BG를 지우는 간단한 OpenGL 스크린 세이버입니다. 그것은 전체 화면을 채우기 색상 있어야하며 시운전에 않지만, 미리보기 I는이 참조 :코코아 스크린 세이버 미리보기

Preview box

일부 코드 :

- (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]; 
} 
+0

몇 가지 코드를 보여주십시오. 코드를 보지 않고 어떻게 당신을 도울 수 있습니까? –

+0

누군가 이미이 문제가 있었지만 코드를 파기하지 않고 해결할 수 있습니다 =) – Stormherz

답변

0

아주 바보 같은 실수를 해결 문제. 대신 [openglView setFrameSize : newSize]; 내가 사용해야했습니다 [openglView setFrame : ...]; 적절한 인수가있는

관련 문제