Инициализация массивов с неизвестным размером в HLSL - PullRequest
1 голос
/ 24 января 2011

У меня есть небольшой фрагментный шейдер, который работает с несколькими значениями в массиве, однако размер массива сохраняется в константе.

Массив объявлен следующим образом:

float4 colors[(blurRadius*2+1)*(blurRadius*2+1)];

и затем я продолжаю присваивать им значения, используя цикл for

for(int i = -blurRadius; i<= blurRadius; i++)
{
    for(int j = -blurRadius; j<=blurRadius;j++)
    {
        colors[j + blurRadius + ((i+blurRadius)*blurRadius)]=float4(0,0,0,0);
    }
}

однако при запуске код возвращается со следующей ошибкой компилятора:

error X4000: variable 'colors' used without having been completely initialized

Как полностью инициализировать массив, размер которого я не знаю в HLSL?

1 Ответ

1 голос
/ 24 января 2011

Кажется, я сегодня немного идиот. Приведенный выше метод работает отлично, если ваш шаг верен.

Получается:

j + blurRadius + ((i+blurRadius)*blurRadius)

Не относится ко всему массиву, поэтому к некоторым из него позже обращались, когда я еще не присвоил значение.

...