여러 개의 셰이더가 관련된 RenderToTexture 컨텍스트에서 최종 렌더 대상 중 하나에 CPU 액세스가 필요합니다. glGetTexImage
을 사용하면 불행히도 모든 텍스처 데이터가 클라이언트 메모리에 복사됩니다. 이 복사본을 방지하기 위해RTT to TEXTURE_BUFFER
, 나는 렌더링의 일환으로 그 질감을 사용하여, 따라서 텍스처에 별도의 버퍼 개체를 연결하는 TEXTURE_BUFFER
를 사용하여 RTT를 implemnet 위해 노력하고 단순히 텍스처의 매핑 할 glMapBuffer
를 사용하고 데이터 저장소에 저장하고 CPU에 액세스 가능하게합니다.
코드를 제외하고 나는 그러한 전략이 옳은지 (내 마음을 잘 넘어서는 것은 아님) 또는 어떤 사양에 어긋나는 지 물어보고 싶습니다.
텍스처를 설정하는 방법으로 TBO 관련 문서가 많지만 RTT 결과를 읽는 데 TBO를 사용하는 것과 관련해서는 아무 것도 없습니다. 나는 내가하려는 일이 어떤 방식 으로든 합법적이지 않은지 궁금해하고 있습니다.
왜 시스템 메모리에 콘텐츠를 다운로드해야합니까? 어쩌면 당신은 GPU에서 작업을 할 수 있을까요? 매핑 버퍼는 일반적으로 복사본을 만듭니다. https://www.opengl.org/wiki/Buffer_Object#Mapping – fen
실제로 시스템 메모리로 복사하는 것을 피하려고합니다. 버퍼 객체 매핑은 복사가 필요없는 경우에 종종 해결됩니다. 아니요, GPU에서 작업 할 수 없습니다. – user815129
픽셀 버퍼 객체를 살펴볼 수도 있습니다. http://www.songho.ca/opengl/gl_pbo.html, https://www.opengl.org/wiki/Pixel_Buffer_Object – fen