У меня странная проблема, с которой я борюсь. В настоящее время я выполняю модульный тест с использованием двух проходов рендеринга. Первый проход рендерится в две цели рендеринга, которые представляют собой два разных среза Texture2DArray. Пока это работает.
Теперь я хочу, чтобы второй проход смешался между этими двумя выходами. Из-за некоторых внутренних предпосылок я вынужден использовать два отдельных Texture2D в пиксельном шейдере. Теперь я хочу создать два различных представления ресурсов шейдера для texture2darray, который был выводом первого прохода, и установить их как один texture2ds для шейдера. Поэтому я определяю правильный массив в описании srv в Texture2DArray.
_srvDesc.Texture2DArray.ArraySize = 1;
_srvDesc.Texture2DArray.FirstArraySlice = currLayer;
Возможно ли это сделать и как это правильно сделать?
Отладка в Nsight, представления выглядят правильно, и связанные текстуры также выглядят правильно. (На самом деле это просто один Texture2DArray с двумя SRV).
Но при выборке двух текстур2D я получаю только первый срез массива.
Если я настрою тестирование FirstArraySlice для обоих видов на один и тот же срез (0 или 1), это даст мне правильный срез при выборке двух текстур. Только если они разные, я всегда получаю первое.
newTexture->_srvDesc.Texture2DArray.ArraySize = 1;
newTexture->_srvDesc.Texture2DArray.FirstArraySlice = 0;
или
newTexture->_srvDesc.Texture2DArray.ArraySize = 1;
newTexture->_srvDesc.Texture2DArray.FirstArraySlice = 1;
Так есть ли общая проблема, что мне не разрешено использовать два разных вида на одну и ту же текстуру или я что-то пропустил?