iphone opengl camera ar

http://hyena0.tistory.com/421

iPhone 에서 OpenGL 로 AR 기능을

사용하려고 하면 필수적으로 OpenGL 의

모델 도형을 투명한 배경위에 보여줘야 합니다.

그래서 설정해야 할 것들이 몇가지 있습니다.

우선 기본 설정에서 RGBA8 로 해주고,

배경의 색깔을 모두 지운 후 alpha 에 투명값을

설정하는 겁니다. “0″ 으로 말이죠.

다시 정리하면 아래 코드를 볼 수 있습니다.

// The GL view is stored in the nib file. When it’s unarchived it’s sent -initWithCoder:

- (id)initWithCoder:(NSCoder*)coder {

if ((self = [super initWithCoder:coder])) {

CAEAGLLayer *eaglLayer = (CAEAGLLayer *)self.layer;

eaglLayer.opaque = NO;//no – transparent

eaglLayer.drawableProperties = [NSDictionary dictionaryWithObjectsAndKeys:

[NSNumber numberWithBool:NO], kEAGLDrawablePropertyRetainedBacking, kEAGLColorFormatRGBA8, kEAGLDrawablePropertyColorFormat, nil];

context = [[EAGLContext alloc] initWithAPI:kEAGLRenderingAPIOpenGLES1];

if (!context || ![EAGLContext setCurrentContext:context]) {

[self release];

return nil;

}

animating = FALSE;

displayLinkSupported = FALSE;

animationFrameInterval = 1;

displayLink = nil;

animationTimer = nil;

// A system version of 3.1 or greater is required to use CADisplayLink. The NSTimer

// class is used as fallback when it isn’t available.

NSString *reqSysVer = @”3.1″;

NSString *currSysVer = [[UIDevice currentDevice] systemVersion];

if ([currSysVer compare:reqSysVer options:NSNumericSearch] != NSOrderedAscending)

displayLinkSupported = TRUE;

[self setupView];

}

return self;

}

해당 코드는 일반적으로 제공되는 OpenGL 코드인데, eaglLayer.opaque = NO 로 설정해야 투명한 배경을

얻을 수 있습니다. 또한 도형을 그리는 부분에서는 배경화면의 색깔을 투명으로 지정해야 합니다.

glBindFramebufferOES(GL_FRAMEBUFFER_OES, viewFramebuffer);

glClearColor(0.0f, 0.0f, 0.0f, 0.0f);

glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

여기서 glClear(Red, Green, Blue, alpha) 값을 보시면 모두 0 으로 설정하면 됩니다.

그런데 이렇게 하고서 투명처리가 안되어 무지 고생을 했습니다.

알고 봤더니 인터페이스 빌더에서 해당 OpenGL 을 그리는 View 의 배경색이 흰색으로 설정되어 있었습니다

그래서 위와 같이 View 를 선택한 뒤, 배경색 팔레트에서 Opacity 값을 0 으로 설정하면

View 자체가 투명한 색을 가지게 됩니다.

그러면 아래와 같은 투명배경의 도형을 카메라와 같이 볼 수 있게 됩니다.

'Computing' 카테고리의 다른 글

The new iPad  (0) 2012.03.09
CentOS 5.5, mongoDB, node.js  (0) 2011.05.19
https in java, android  (0) 2010.12.08
x.inf contains DirIDs, which are not supported  (0) 2010.06.10
ffmpeg build  (0) 2010.06.04
prev 1 ··· 11 12 13 14 15 16 17 ··· 226 next