j'ai lu que Maya utilise OpenGL de la facon suivante: ils ont 4 viewports, 4 threads de rendu. Ils effectuent le rendu dans les 4 viewports en même temps, en utilisant des contextes différents, mais ils partagent les ressources entre les contextes (wglShareLists).
J'ai essayé de faire un truc similaire, les perfs on chuté de moitié; pour être exact, j'ai 5 fenêtres OpenGL et j'effectue le rendu par "jobs" (donc des qu'un thread est disponible, il fait un rendu). Sur mon processeur, cela devrait donc être 4 rendus en parallèle puis le 5ème lorsque le premier est fini.
Je peux facilement choisir entre enchaîner les jobs (le 5ème dépend du 4ème qui dépend du 3ème... etc) ou aucune dépendance, dans le premier cas chaque job doit être terminé avant d'entamer le suivant: j'obtiens quelques 300 frames par secondes pour un rendu "vide".
Dans le deuxième cas ou les jobs ne peuvent s'éxecuter simultanément, j'obtiens seulement 100 a 120 frames par secondes.
Ca me paraît un peu louche; surtout que je n'utilise encore aucune resource, je ne fais qu'un rendu vide! j'ai essayé sur les cartes nvidia et ATI, sans aucun bon résultat...
je fais quelque chose de travers?
Partager