Je rends une certaine scène à un tampon d'image hors champ (FBO) et puis je lis l'image rendue en utilisant glReadPixels()
pour le traitement sur la CPU. Le traitement implique des routines de numérisation très simples et l'extraction de données. Après le profilage, j'ai réalisé que la majeure partie de ce que mon application fait est de passer du temps dans glReadPixels()
- plus de 50% du temps. L'étape naturelle consiste donc à déplacer le traitement vers le GPU afin que les données n'aient pas à être copiées. Donc, ma question est - quelle serait la meilleure façon de programmer une telle chose au GPU?
GLSL?
CUDA?
Autre chose dont je ne suis pas actuellement au courant?
Les exigences principales est qu'il aura accès à des tampons de trame hors écran rendus (ou des données de texture car il est possible de rendre à une texture) et d'être en mesure de fournir certaines informations au processeur, par exemple dans l'ordre de 1-2Kb par trame.Débutant à la programmation GPU: quoi apprendre?
Répondre
Vous pourriez trouver les réponses aux questions "Intro to GPU programming" utiles.
-Adam
Il y a un certain nombre de pointeurs pour commencer avec la programmation GPU dans d'autres questions, mais si vous avez une application qui est déjà construit en utilisant OpenGL, puis probablement votre question est vraiment « que l'on va interopérer avec OpenGL "? Après tout, votre objectif est d'éviter le retour de votre FBO du GPU au CPU avec glReadPixels(). Si, par exemple, vous deviez le relire de toute façon, puis copier les données dans un tampon CUDA, puis le transférer vers le GPU en utilisant les API CUDA, il n'y aurait pas beaucoup de points.
Vous avez donc besoin d'un package GPGPU qui prendra directement en entrée votre objet OpenGL FBO, sans aucune copie supplémentaire.
Cela exclurait probablement tout sauf GLSL. Je ne suis pas sûr à 100% si CUDA a un moyen de fonctionner directement sur un objet tampon OpenGL, mais je ne pense pas qu'il a cette fonctionnalité. Je suis sûr que SDK Stream d'ATI ne fait pas cela. (Bien qu'il fonctionnera avec DirectX.)
Je doute que la "technologie d'aperçu" DirectX 11 avec les shaders de calcul a cette fonctionnalité, soit. Suivi: il semblerait que CUDA, au moins la version la plus récente, prenne en charge l'interopérabilité OpenGL. Si c'est le cas, c'est probablement votre meilleur pari.
Je l'ai récemment trouvé Modern GPU
- 1. Total débutant à la recherche de tutoriels programmation outlook ajouter ins en C++
- 2. Meilleure ressource pour apprendre la programmation d'application? (.Net/Cocoa/etc)
- 3. Comment apprendre la programmation et le modèle génériques C++?
- 4. débutant à la question OO
- 5. Quelle technique en programmation fonctionnelle est difficile à apprendre mais utile par la suite?
- 6. Actionscript Débutant
- 7. Logiciel de surveillance GPU
- 8. Java Programmation mobile pour un débutant, par où commencer?
- 9. Système d'analyse d'or - À quoi peut-il servir pour la programmation?
- 10. Apprendre le langage C++
- 11. Conseils pour un débutant C, CUDA, & ANN?
- 12. Java débutant question: System.out.println
- 13. Débutant Référence actioncript
- 14. À quoi sert l'expression régulière/^ \ s * $/do?
- 15. Débutant à Débutant conseils Ajax pour page Web laid facture
- 16. Comment commencer à apprendre à programmer dans Flex?
- 17. Y a-t-il de bons cours pour apprendre la programmation orientée objet?
- 18. Ressources pour apprendre GNUMake?
- 19. À quoi sert la variable d'environnement XDG_SESSION_COOKIE?
- 20. À quoi ressemble la mémoire fragmentée?
- 21. À quoi sert la propriété AppDomainSetup.SandboxInterop?
- 22. Apprendre le PHP et la programmation web pour les programmeurs intermédiaires
- 23. À quoi sert __gxx_personality_v0?
- 24. Ressources pour apprendre la programmation d'applications GNOME pour le programmeur MFC?
- 25. Apprendre un langage Web
- 26. À quoi sert MyAssembly.XmlSerializers.dll?
- 27. Apprendre Invisible Caractéristiques
- 28. Comment démarrer la programmation Blackberry?
- 29. Apprendre à utiliser AJAX avec CodeIgniter
- 30. CUBLAS ou bibliothèques supportées, et emphase pour la lecture pour un débutant