J'ai besoin de rendre beaucoup d'images (dizaines de milliers) en dehors de l'écran en utilisant OpenGL.
Je cours sous Windows et utilise QT comme framework. la solution ne peut être que des fenêtres, cela n'a pas vraiment d'importance.OpenGL: Rendu rapide hors-écran
D'après ce que j'ai trouvé avec Google il y a un certain nombre d'options pour ce faire This article qui semble plutôt daté suggérer quelques moyens, dont ceux qui sont pertinents sont:
- Windows spécifique - Utilisation
CreateDIBSection
et en quelque sorte lier la texture à celui-ci. - Utilisez l'extension pbuffers qui semble être supportée sur ma carte.
This thread (message 6) suggère une manière spécifique de l'intervalle QT de le faire en utilisant QGLWidget::renderPixmap
Ma question est - ce qui serait le moyen le plus rapide? pbuffers semble être le pari le plus sûr car il est garanti d'être effectué sur le matériel, mais n'utilise pas la méthode CreateDIB passe également par le matériel? Qu'en est-il de la méthode QT? il semble y avoir un problème de création de contexte avec celui-ci. Je ne voudrais sûrement pas créer un nouveau contexte pour chaque image que je crée.
Est-ce que quelqu'un a une bonne expérience avec cela?
EDIT: Répondre au commentaire -
J'ai une scène constante qui ne change pas du tout et je le rendre de nombreux points de vue différents. Pour l'instant les images retournent à l'utilisateur et seront traitées par le CPU. Peut-être dans le futur ils vont être traités sur le GPU.
D'où proviennent les images? Est-ce que vous reproduisez la même scène encore et encore, peut-être à partir de différents points de vue? Ou chargez-vous la texture après la texture du disque? Et où vont les images? Dans un calcul gpu? Sur le disque? Votre réponse dépend des détails. – ejgottl
ANSWERED la question – shoosh
Peut-être que ce lien peut être utile, ici je objets framebuffer avec 'QGLFrameBuffer' http://stackoverflow.com/questions/19934102/qglwidget-and-fast-offscreen-rendering/ – linello