2017-01-23 4 views
1

Une question générale sur une fenêtre avec un menu étendu qui est souvent mis à jour, mais seulement environ 10% de l'écran actuel est mis à jour. Beaucoup si le texte reste inchangé.SDL: rendu matériel vs rendu logiciel

SDL2 utilise le rendu et les textures pour utiliser l'accélération matérielle, mais permet également le rendu logiciel.

Ma question est:

  • Est-il plus rapide de redessiner tout l'écran/menu à chaque fois en rendant directement au matériel à l'aide SDL_CreateRender()/matériel rendu où le menu entier est établi chaque fois que 10% du menu change réellement? Ou:
  • Est-il plus rapide d'écrire le menu entier une seule fois dans la RAM en utilisant SDL_CreateSoftwareRenderer()/software-render et de mettre à jour uniquement les 10% qui changent réellement?
+3

** Profil à savoir à coup sûr. ** (Mais je dirais que cela n'a pas vraiment d'importance à moins qu'il ne commence à lag.) En outre, il y a une troisième voie qui devrait être la plus pratique: Le matériel pourrait rendre une partie statique du menu dans une texture, puis rendre le matériel à chaque image. (De plus, si vous créez un jeu, le rendu logiciel n'est probablement pas une option, puisque tout sauf le menu est souvent mis à jour souvent.) – HolyBlackCat

+2

Je suppose que cela dépendrait beaucoup du PC sur lequel il tourne, mais du matériel accéléré peut être plus rapide, même avec un redessin complet. Cependant, il semble que ce n'est pas une application lourde de ressources, alors peut-être que ce qui est le plus facile à écrire et à maintenir serait le mieux. – Alden

+0

Merci les gars. C'est agréable de pouvoir avoir d'autres opinions avant de passer beaucoup de temps sur une question. L'itinéraire le plus simple consistait à utiliser le rendu matériel et à redessiner la totalité de la fenêtre chaque fois qu'elle était suffisamment rapide. – Brian

Répondre

1

Merci les gars.

Il est bon de pouvoir obtenir d'autres avis avant de passer beaucoup de temps sur un problème. L'itinéraire le plus simple consistait à utiliser le rendu matériel et à redessiner la totalité de la fenêtre chaque fois qu'elle était suffisamment rapide.

Le programme principal dessine tout (données en temps réel et interface graphique sous Linux) en tant que pixels individuels à une texture qui est rendue à un taux de 30 Hz à l'écran. Ce que j'ai trouvé était qu'une fois les fréquences d'horloge du processeur dépassaient 1Ghz, la plupart des graphiques (petites zones/pixels) étaient aussi rapides ou plus rapides que le rendu matériel, sauf lors de l'effacement d'une grande partie de l'écran. lecture pour obtenir le rendu SDL travaillant dans un thread pendant que les données de pixel (GUI et données) sont mises à jour dans le principal.