Nvidia має розширення для створення командних буферів у сучасних GL .
Причина відсутності подібних функціональних можливостей полягає в тому, що в тому, як візуалізувати, а на список відображення впливає багато різних станів, існує багато стану. Наприклад, зміна стану суміші вимагає виправлення фрагменту шейдера на деякому обладнання.
NVidia вирішила це, захопивши весь стан і повторно скинувши його після відправки:
1) Що мотивує дизайн?
Основна мета - вміти повторно використовувати попередньо перевірені буфери команд. Інші API та пропозиції вирішують це за допомогою різних втілень списків команд або об'єктів стану, але повторювана проблема полягає в тому, що взаємодія між різними етапами конвеєра перешкоджає цьому розповсюдженню та повторному використанню. Ці взаємодії часто специфічні для обладнання (і відрізняються від постачальника до постачальника чи навіть від покоління до покоління), а нові взаємодії впроваджуються новими функціями, які не уявлялися, коли була запропонована схема переважання.
Ми намагаємося вирішити це, маючи об’єкт монолітного стану, який охоплює (майже) весь стан трубопроводу. Це повинно надати достатньо інформації для всіх реалізацій, щоб зробити необхідну перехресну перевірку. Ми намагаємося створити їх таким чином, щоб мінімізувати новий слід API - оскільки ми хочемо ВСЕ стан (включаючи будь-який доданий у майбутньому), ми просто захоплюємо його з поточного стану контексту.
[...]
23) У якому стані залишається стан, що змінюється лексемами після відправки?
ВИРІШЕНО: стан скидається.
(із тексту розширення, пов’язаного вище)
Однак справжнім наступником є функція буфера команд у DX12 та vulkan. Вони також захоплять усі стану візуалізації в один об'єкт, який буде використовуватися під час створення та заповнення буфера команд. Розширення NVidia засноване на цій архітектурі в результаті участі NVidia в дизайні Vulkan.