2014-04-08 3 views
0

이 OpenGL ES 2.0 자습서 http://www.raywenderlich.com/3664/opengl-tutorial-for-ios-opengl-es-2-0을 따라하고 있으며 glClearColor로 화면을 지우려고하고 있지만 표시되는 것은 모두 검은 색입니다. 왜 내 GLView보고 왜 볼 수 있습니까?OpenGL UIView가 검은 색으로 만 표시됩니다.

#import "GLView.h" 

@implementation GLView 

+ (Class)layerClass 
{ 
    return [CAEAGLLayer class]; 
} 

- (id)initWithFrame:(CGRect)frame 
{ 
    self = [super initWithFrame:frame]; 
    if (self) { 
     // Initialization code 
     [self setupLayer]; 
     [self setupContext]; 
     [self setupRenderBuffer]; 
     [self setupFrameBuffer]; 
     [self render]; 
    } 
    return self; 
} 

- (void)setupLayer 
{ 
    m_eaglLayer = (CAEAGLLayer *)self.layer; 
    m_eaglLayer.opaque = YES; 
} 

- (void)setupContext 
{ 
    m_context = [[EAGLContext alloc] initWithAPI:kEAGLRenderingAPIOpenGLES2]; 

    if (!m_context) { 
     NSLog(@"Failed to initialize OpenGLES 2.0 context"); 
     exit(1); 
    } 

    if (![EAGLContext setCurrentContext:m_context]) { 
     NSLog(@"Failed to set current OpenGL context"); 
     exit(1); 
    } 
} 

- (void)setupRenderBuffer 
{ 
    glGenRenderbuffers(1, &m_colorRenderBuffer); 
    glBindRenderbuffer(GL_RENDERBUFFER, m_colorRenderBuffer); 
    [m_context renderbufferStorage:GL_RENDERBUFFER fromDrawable:m_eaglLayer]; 
} 

- (void)setupFrameBuffer 
{ 
    GLuint framebuffer; 
    glGenFramebuffers(1, &framebuffer); 
    glBindFramebuffer(GL_FRAMEBUFFER, framebuffer); 
    glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_RENDERBUFFER, m_colorRenderBuffer); 
} 

-(void)render 
{ 
    glClearColor(0, 104.0/255.0, 55.0/255.0, 1.0); 
    glClear(GL_COLOR_BUFFER_BIT); 
    glViewport(0, 0, self.frame.size.width, self.frame.size.height); 
    [m_context presentRenderbuffer:GL_RENDERBUFFER]; 

} 

@end 
+0

삭제하기 전에 glViewport를 호출 해보세요. 또한 두 버퍼를 모두 설정 한 후 프레임 버퍼 상태를 확인하십시오. –

+0

자신의 프레임 버퍼를 관리해야하는 고급 (보통 멀티 패스) 렌더링 기술을 사용하지 않는 한 ['GLKView'] (https://developer.apple.com/library/ios/documentation/glkit)를 사용하십시오. /reference/glkview_classreference/Reference/Reference.html) 프레임 버퍼 설정 문제에 대해 걱정할 필요가 없습니다. RW 자습서가 마음에 들면 [이 하나] (http://www.raywenderlich.com/5223/beginning-opengl-es-2-0-with-glkit-part-1)를 시도하십시오. – rickster

+0

먼저 glViewport 호출 작동하지 않았다. GLKView를 사용하려고합니다. 왜 작동하지 않는지 궁금합니다. 셰이더 및 버텍스 데이터가 제외 된 원본 프로젝트와 거의 동일합니다. – PineApps

답변

0

이 문제점을 발견했습니다. App Delegate에서 UIWindow를 초기화하지 않았습니다.

관련 문제