2008-10-18 5 views
5

OpenGL을 사용하여 상당히 많은 (수만) 이미지를 스크린 외부에서 렌더링해야합니다.
Windows에서 실행 중이고 QT를 프레임 워크로 사용하고 있습니다. 솔루션은 창만 될 수 있습니다. 실제로 중요하지 않습니다.OpenGL : 빠른 오프 스크린 렌더링

내가 사용 발견 한 것을 구글 오히려 일 것 같습니다이 This article을 수행하기위한 여러 옵션이 몇 가지 방법을 제안하는 밖으로 관련 사람은 거기에서 :

  • 윈도우 특정 - 사용 CreateDIBSection 그리고 어떻게 든 텍스처를 바인딩합니다.
  • 내 카드에서 지원되는 것으로 보이는 pbuffers 확장 프로그램을 사용하십시오. 하나는 가장 빠른 방법이 될 것이다 -

This thread (메시지 6)입니다 QGLWidget::renderPixmap

내 질문을 사용하여이 일의 QT 구체적인 방법을 제안? pbuffers는 하드웨어에서 수행되도록 보장되었지만 CreateDIB 메서드를 사용하지 않는 것이 하드웨어를 통과하기 때문에 가장 안전한 방법 인 것 같습니다. QT 방법은 어떻습니까? 거기에 약간의 컨텍스트 생성 문제가있는 것 같습니다. 분명히 내가 만든 모든 이미지에 대해 새로운 컨텍스트를 만들고 싶지는 않습니다.
누구에게도 좋은 경험이 있습니까?


편집 : 코멘트에 대답 -
나는 전혀 변하지 않는 일정한 장면을 가지고 있고 나는 많은 다른 관점에서 렌더링하고있다. 지금은 이미지가 사용자에게 돌아가고 CPU에 의해 처리됩니다. 앞으로는 GPU에서 처리 될 가능성이 있습니다.

+0

이미지의 출처는 어디입니까? 아마도 다른 시점에서 같은 장면을 반복해서 렌더링하고 있습니까? 아니면 디스크에서 텍스쳐로 텍스처를로드하고 있습니까? 그리고 이미지는 어디에 있습니까? GPU 계산으로? 디스크에? 귀하의 대답은 세부 사항에 달려 있습니다. – ejgottl

+0

어쩌면이 링크가 도움이 될 수있는 질문 – shoosh

+0

에 응답, 나는 여기 http://stackoverflow.com/questions/19934102/qglwidget-and-fast-offscreen-rendering/ – linello

답변

9

FBO을 사용하십시오. 그것은 빠르고, 휴대하기 쉬우 며, pbuffers보다 훨씬 좋네요.

편집 : 두 개의 서로 다른 식 코멘트 사이에서 최적의 성능, 대체 렌더링 :

  1. 에 렌더링
  2. 가에서 다시 읽기 B와 과정을 렌더링
  3. 에 렌더링
  4. B에서 다시 읽기
  5. 고토 2

이 방법을 사용하면 하나의 FBO를 다시 읽은 다음 GPU가 다른 GPO로 렌더링하는 동안 병렬로 처리 할 수 ​​있습니다.

+0

예 내가 'QGLFrameBuffer''와 프레임 버퍼 오브젝트를 사용 FBO에 대해 읽었을뿐입니다. 좋은 생각처럼 두 소리 사이에서 번갈아 가며. Texture 렌더링과 RenderBuffer 렌더링의 차이점이 있는지 알고 계십니까? 어느 쪽이 더 빠릅니까? – shoosh

+0

렌더 버퍼에 렌더링하는 것이 바람직합니다. 더 빠르고 더 확실하게 느려지지 않을 것입니다. –

+0

좋은 PBO 링크 http://www.songho.ca/opengl/gl_pbo.html –

관련 문제