2013-02-15 2 views
0

텍스처 렌더링 개념을 구현 중이며 FBO의 범위와 관련하여 의심의 여지가 있습니다. glDrawArrays를 사용하여 기본 FBO에서 렌더링을 수행 한 후 질감 및 기본 FBO가 아닌 요소를 삭제합니다. 그런 다음 glReadPixels을 호출하여 기본 FBO에서 내용을 읽습니다. 그래서, 내 질문은 바로 내가 FBO와 텍스처를 삭제하기 전에 readpixel을 호출해야합니까?텍스처 렌더링과 관련하여

FBO를 기본 FBO로 그리면 기본 FBO와 텍스처가 필요하지 않지만 OpenGL의 일부 개발자는 위의 내용을 참조하여 응용 프로그램에서 이상한 일을하고 있다고 말했습니다. 이 점을 이해하도록 도와주세요.

  1. 는 FBO 바인딩을 해제 할 몇 가지 기본 요소를
  2. 을 렌더링 FBO를 프레임 버퍼 객체를 만들고 색 첨부 파일로
  3. 바인드를 적당한 질감을 첨부하여 취소 : 여기

    내가 다음하고있는 단계입니다 따라서 시스템으로 다시 전환 FBOO
  4. 색 첨부로 사용되는 텍스처 바인딩
  5. 시스템 F에서 렌더링 위의 텍스처와 BO입니다.
  6. 삭제 텍스처와 FBO가 생성되었습니다.
  7. 시스템 FBO의 glReadpixel입니다.

이제 시스템 FBO에서 렌더링했습니다. 왜 텍스쳐와 텍스쳐로 사용 된 다른 FBO가 여전히 필요합니까?

참고 : 두 개의 FBO를 구별하기 위해 FBO라는 용어를 사용하고 있습니다. 모두 여기에 http://www.songho.ca/opengl/gl_fbo.html

하지만 모든 당신이 렌더링 후 텍스처 또는 FBO을 삭제할 필요가 없습니다

init() { 
    // setup FBO, attachments, etc... 
} 

render() { 
    glBindFramebuffer(your_fbo); 
    glClearBuffer(...); 
    renderScene(); 

    glBindFramebuffer(0); // setup default, system FBO 
    glBindTexture(texture_id_that_was_attached_to_FBO); 
    renderSecondScene(); 
} 

는 OpenGL에서 텍스쳐 렌더링을위한 의사 코드의 비트입니다 :

+1

FBO 입력 또는 첨부 된 FBO 출력 텍스처를 삭제한다는 의미입니까? 출력 텍스처로 렌더링하면 FBO가 완료됩니다. 삭제하면 아무런 효과가 없습니다. 오랫동안 목표물 (첨부 된 결과물)을 감추고 그 부분을 삭제하지 않는 한. – Robinson

+0

이상한 점은 각 도면 반복에 대한 중간 FBO와 텍스처를 다시 만들고 삭제한다는 것입니다. 느리고 비효율적입니다. 보통 한 번만 생성 한 다음 재활용합니다. 차원을 변경해야하는 경우에만 삭제하고 다시 만듭니다. – datenwolf

+0

@datenwolf : 루프가 없으므로 프레임이 1 개 밖에 없습니다. – debonair

답변

0

나는이 읽는 것이 좋습니다 귀하의 장면, 일부 정리 절차에서 응용 프로그램의 끝에서 그들을 삭제하십시오.

+0

내 질문에 잘못이 있다고 생각해. readpixel 호출 전에 glDrawArray 전에 텍스처/fbo를 삭제할 때 무엇이 ​​잘못되는지 알고 싶습니다. – debonair

+2

괜찮지 만 텍스처를 삭제하고 readpixels을 호출 할 필요가 없습니다. 아마도 일부 코드를 게시 할 것입니다 ... – fen

관련 문제