2013-08-19 5 views
4

Brad Larson은 '장면을 텍스처 지원 프레임 버퍼로 렌더링'을 위해 herehere을 제공하지만 나머지 드로잉에 사용하는 것과 동일한 프레임 버퍼인지 여부는 분명하지 않습니다.OpenGLES 2.0 프레임 버퍼를 텍스처와 렌더 버퍼에 동시에 바인딩 할 수 있습니까?

프레임 버퍼에 렌더 버퍼를 연결하는 경우 프레임 버퍼는 동일한 호출로 텍스처로 렌더링 할 수 있습니까?

답변

3

FBO 사용법과 약간 혼동스러운 것 같습니다. 필요한 경우 시작해야합니다 : Apple Developer - Drawing offscreen. This도 도움이 될 수 있습니다.

렌더 버퍼는 FBO (프레임 버퍼 객체)에 바인딩 할 수있는 것입니다. FBO는 렌더링을 즉시 표시하지 않고 렌더링 결과를 다시 읽거나 추가 렌더링을 수행하려는 경우에 만드는 것입니다. FBO가 OpenGL ES 2.0에서 작동하는 방식으로 단 하나의 컬러 부착 점만 사용할 수 있습니다 (GL_COLOR_ATTACHMENT0 - 프래그먼트 셰이더 출력 변수 gl_FragColor가이 부착 점에 연결됨). 하나의 텍스처 또는 렌더 버퍼가 첨부 될 수 있습니다. 그래서 마지막 질문에 답하기 위해 renderbuffer와 텍스처에 동시에 색상을 쓰는 FBO를 가질 수 없습니다.

질문의 첫 번째 부분은 이미 FBO 또는 기본 프레임 버퍼를 사용하고 있는지 여부에 따라 다릅니다.

  1. 바인드
  2. 는 FBO
  3. 바인드의 기본 프레임 버퍼
  4. 에 부착 된 텍스처에 뭔가를 렌더 FBO 단계에서 텍스처를 사용 기회는 당신이 찾고있는 행동이 같은 것입니다 수 있습니다 2를 사용하여 두 번째 렌더 패스에서 렌더링에 영향을줍니다.

희망 사항이 조금이라도 답변을 드리겠습니다.

+0

흠 - 어쩌면 혼란 스러울 지 모르겠습니다. 생성하고 프레임 버퍼를 바인드해야합니까? 기본 프레임 버퍼가 무엇을 의미합니까? 텍스처에 렌더링 할 수 없으며 화면 상에 텍스처를 렌더링합니까? –

+0

기본 프레임 버퍼는 기본적으로 렌더링되는 곳입니다. 아무 것도하지 않아도됩니다. Framebuffer _objects_는 대신 렌더링 할 수 있으며 일부는이를 "오프 스크린 렌더링"이라고합니다. 그렇게하면 기본 프레임 버퍼 대신 텍스처로 이미지가 생성됩니다 (화면에 표시됨). 텍스처에서 이미지를 기본 프레임 버퍼 (화면 상)로 복사 할 수 있습니다. 보통 블리 팅 (blitting)으로 처리됩니다 (단, OpenGL ES 3.0에서만 사용 가능합니다). 그러나 화면 상에 이미지를 보여 주기만하면 FBO를 사용하지 않을 것입니다. –

+0

감사합니다. 그것은 매우 도움이되었다. –

관련 문제