Pergunta

Eu preciso prestar bastante alot (dezenas de milhares) imagens fora da tela usando OpenGL.
Estou executando no Windows e usando QT como um quadro. A solução pode ser somente para Windows, isso realmente não importa.

Pelo que tenho encontrado usando Google há uma série de opções para fazer isso Este artigo que parece em vez datada de sugerir algumas maneiras, dos quais os mais relevantes são:

  • Windows específica -. Use CreateDIBSection e de alguma forma se ligam a textura a ele
  • Use a extensão pbuffers que me parecem ser apoiada no meu cartão.

Este thread (Mensagem 6) sugere uma maneira específica QT de fazer isso usando QGLWidget::renderPixmap

A minha pergunta é - qual seria a maneira mais rápida? pbuffers parece ser a aposta mais segura porque é garantido para ser executado no hardware, mas não está usando o método CreateDIB também atravessa o hardware? E sobre o método QT? parece haver algum problema de criação de contexto com um presente. certamente eu não gostaria de criar um novo contexto para cada imagem que eu criar.
Será que qualquer um tem alguma boa experiência com isso?


Editar : Respondendo ao comentário -
Eu tenho uma cena constante que não muda em tudo e eu estou tornando-à partir de muitos pontos de vista diferentes. Por agora as imagens voltar para o usuário e serão processados ??pela CPU. Possivelmente no futuro eles vão ser processados ??na GPU.

Foi útil?

Solução

Use FBO . É rápido, mais agradável portátil e muito a utilização de pbuffers.

EDIT: Para um melhor desempenho, prestação alternam entre dois FBOs diferentes:

  1. Render a A
  2. Render para B
  3. Leia volta de uma e processá-lo
  4. Render a A
  5. Leia volta do B
  6. Goto 2

Desta forma, você pode estar lendo volta um FBO e depois processá-lo enquanto o GPU torna para o outro em paralelo.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top