если поместить текстуру A в регистр t0, а затем поместить текстуру B в регистр t0, будет ли текстура t0 больше недоступна на графическом процессоре?
Он больше не привязан к регистру текстуры, поэтому не будет применяться к любым полигонам. Вам придется снова привязать его к регистру текстуры, чтобы использовать его.
Или он все еще находится в памяти графического процессора, но мне придется сделать вызов, чтобы загрузить его в регистр текстуры, чтобы получить его?
Как правило, они остаются в видеопамяти до тех пор, пока не будет загружено достаточно других ресурсов, необходимых для восстановления памяти. Это было более очевидно в DirectX 9, когда вам нужно было указать, в какой пул памяти помещать ресурс. Теперь все эффективно в том, что было в пуле памяти D3DPOOL_MANAGED в Direct3D 9. Когда вы установите регистр текстуры для использования текстуры, это будет быстро пока текстуры все еще находятся в видеопамяти.
В аналогичном ключе выполняйте вызовы PSSetShaders, или PSSetShaderResource, или IASetVertexBuffers и т. Д. .... блокируйте и копируйте данные в графический процессор перед возвратом, поэтому после вызова можно изменить или даже освободить ресурсы, которыми они были на основании того, что он сейчас находится на GPU?
DirectX управляет ресурсами для вас и пытается хранить их в видеопамяти как можно дольше.