Nvidia a une extension pour créer des tampons de commande dans GL moderne .
La raison du manque de fonctionnalités similaires est qu'il y a beaucoup d'état impliqué concernant la façon de rendre et la liste d'affichage être affectée par beaucoup d'état différent. Par exemple, la modification de l'état de fusion nécessite de patcher le fragment shader sur certains matériels.
NVidia l'a résolu en capturant tous les états et en les réinitialisant après un envoi:
1) Qu'est-ce qui motive la conception?
L'objectif principal est de pouvoir réutiliser des tampons de commande pré-validés. D'autres API et propositions ont résolu ce problème avec diverses incarnations de listes de commandes ou d'objets d'état, mais un problème récurrent est que les interactions entre les différentes étapes du pipeline empêchent cette prévalidation et cette réutilisation. Ces interactions sont souvent spécifiques au matériel (et diffèrent d'un fournisseur à l'autre ou même d'une génération à l'autre) et de nouvelles interactions sont introduites par de nouvelles fonctionnalités qui n'étaient pas imaginées lorsque le schéma de prévalidation a été proposé.
Nous essayons de résoudre ce problème en ayant un objet d'état monolithique qui englobe (presque) tout l'état du pipeline. Cela devrait fournir suffisamment d'informations pour toutes les implémentations pour effectuer la validation croisée nécessaire. Nous essayons de les créer de manière à minimiser la nouvelle empreinte de l'API - puisque nous voulons que TOUS les états (y compris ceux ajoutés à l'avenir), nous les capturions simplement à partir de l'état actuel du contexte.
[...]
23) Dans quel état se trouve l'état, modifié par les jetons, après l'appel de répartition?
RÉSOLU: l'état est réinitialisé.
(à partir du texte d'extension lié ci-dessus)
Cependant, le véritable successeur est la fonctionnalité de tampon de commande dans DX12 et vulkan. Ceux-ci captureront également tous les états de rendu dans un seul objet à utiliser lors de la création et du remplissage du tampon de commande. L'extension NVidia est basée sur cette architecture en raison de l'implication de NVidia dans la conception Vulkan.
monstre à cliquet
la source