Документация msdn объясняет, что в directx 11 существует несколько способов программной реализации текстуры directx 11:
(1) Создайте текстуру с текстурой использования по умолчанию и инициализируйте ее данными из памяти
(2) Создайте текстуру с динамическим использованием, используйте DeviceContext Map, чтобы получить указатель на текстурную память, записать в нее, затем использовать Unmap, чтобы указать, что вы сделали (в какой момент, я думаю, он скопирован в gpu)
(3) Создайте текстуру с использованием промежуточного уровня и выполните те же действия, что и для динамической текстуры, но следуйте этому при вызове ID3D11DeviceContext.CopyResource, чтобы использовать эту промежуточную текстуру, чтобы, в свою очередь, заполнить (неизменяемую) по умолчанию или динамическую текстуру.
Однако в документации не объясняются все плюсы и минусы каждого метода, и я все еще довольно новичок в directx, поэтому мне это совершенно не ясно.
Каковы плюсы и минусы каждого из этих способов создания текстуры программно в directx 11?
Боковое примечание: Я читал, что в контексте промежуточных текстур чтение из gpu не буферизировано, поэтому вам нужно выполнить собственную двойную буферизацию. Но я не знаю, было ли это правильно и применимо ли оно к написанию с использованием промежуточных текстур (или даже действительно, что это значит).
Второе примечание: В документации по методу карты указано, что он получает указатель на данные в субресурсе и отказывает в доступе GPU к этому подресурсу. Когда GPU хочет получить доступ к текстуре, базовые данные которой были вызваны Map, что она делает? Срыв? (Я спрашиваю, потому что это звучит как часть плюсов и минусов, о которых я спрашивал)