Создание представления представления ресурса шейдера
Мне было интересно, если это считается "хорошо" практика, чтобы создать представление ресурса шейдера для ID3D12Resource
перед тем, как передать его в ID3D12GraphicsCommandList
и уничтожить его после завершения кадра?
Обратите внимание, что я создаю представление дескриптора для указанного ресурса только один раз.
1 ответ
Это цитата инженера Microsoft о том, почему CreateShaderResourceView возвращает void, а не код ошибки.
У нас намеренно нет кодов возврата в высокочастотных API-интерфейсах, поскольку было бы напрасной тратой процессорного времени на проверку ошибок при каждом вызове, что может происходить на лету много тысяч раз за кадр.
Они предполагают, что это API-интерфейс, который можно многократно называть фреймом. Ответ на ваш вопрос: да, вы можете сделать это, это не проблема.
Вы просто должны быть осторожны, чтобы защитить время жизни представления в куче дескриптора до тех пор, пока gpu может понадобиться до перезаписи.