2011-01-28 3 views
2

iOS 장치 (iPad)에서 glRenderbufferStorage를 통해보기를 명시 적 저장소에 백업하는 CAEAGLLayer에서 렌더 버퍼의 저장소를 변경하기로 결정했습니다. 안타깝게도 다음 코드는 유효한 FBO를 가져 오지 못합니다. 누군가가 내가 놓친 무엇? 말해 주시겠습니까왜 iOS에서 glRenderbufferStorage가 실패한 것 같습니까?

glGenFramebuffers(1, &m_framebuffer); 
glBindFramebuffer(GL_FRAMEBUFFER, m_framebuffer); 

glGenRenderbuffers(1, &m_colorbuffer); 
glBindRenderbuffer(GL_RENDERBUFFER, m_colorbuffer); 

GLsizei width = (GLsizei)layer.bounds.size.width; 
GLsizei height = (GLsizei)layer.bounds.size.height; 
glRenderbufferStorage(m_colorbuffer, GL_RGBA8_OES, width, height); 

glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_RENDERBUFFER, m_colorbuffer); 

참고 :
는 레이어의 크기가 유효하고 올바른 . 이것은 실용적인 렌더링 코드 작업입니다.

glRenderbufferStorage(...) 

이전에 내가 한 : glRenderbufferStorage의 첫 번째 인수는 GL_RENDERBUFFER하지 m_colorbuffer해야

[m_context renderbufferStorage:GL_RENDERBUFFER fromDrawable:layer] 
+0

레이어하기에 정답은'[context renderbufferStorage]'를'glRenderbufferStorage (...)'호출로 대체 할 수 없기 때문입니다. – bobobobo

답변

2

내가 만드는 중이라서 유일한 변화는 라인입니다.

아이폰 OS에서

+0

잘 맞습니다. 알았다. 이 renderbuffer에 렌더링 할 결과를 표시하는 방법에 대해서는 여전히 당황 스럽습니다. 내 CAEAGLLayer와 renderbuffer 사이의 연결을 설정하지 않으면 화면에 픽셀을 가져올 방법이 없습니다. 나는 무엇을 놓치고 있습니까?!? 한숨 ... – dugla

+0

사소한 오류를 잡으려고 합니다만, 중대한 오류는 __he 할 수 없습니다 __,이 방법은 유효하지 않습니다. '[context renderBufferStorage]'는 렌더링이 작동하지 않기 때문에 분명히 내부적으로 다른 일을합니다. – bobobobo

5

을 당신이에 EAGLContext에서 저장을 요청해야합니다, 당신은 컬러 첨부 파일을 바인딩 glRenderBufferStorage을 사용할 수 없습니다 (즉, 이전 glBindRenderbuffer 통화에서 GL_RENDERBUFFER 대상에 바인딩 무슨이기 때문에이 m_colorbuffer에 저장합니다) 뷰 레이어. 어딘가에보기 코드에, 당신이 유사한 코드를 사용해야합니다 : 그것은 아이폰 OS에 의해 필요한대로

// First Bind a Render Buffer 
glBindRenderbuffer(GL_RENDERBUFFER, m_colorBuffer); 
[context renderBufferStorage:GL_RENDERBUFFER forDrawable:(CAEAGLLayer*) self.layer]; 

당신은 두 번째 행을 피할 수 없다, 이것은 당신이 참조하는 행은 renderbuffer에서 "연결"

관련 문제