2013-05-06 3 views
2

У меня есть текстура, и мне нужно знать ее размеры в пиксельном шейдере. Это похоже на работу для GetDimensions. Вот код:HLSL: Получение размеров текстуры в пиксельном шейдере

Texture2D t: register(t4); 
... 
float w; 
float h; 
t.GetDimensions(w, h); 

Однако это приводит к ошибке:

X4532: cannot map expression to pixel shader instruction set

Эта ошибка, кажется, не быть задокументированы в любом месте. Я использую функцию неправильно? Есть ли другой метод, который я должен использовать?

Я работаю в шейдерной модели 4.0 уровня 9_1 через DirectX.

ответ

2

Эта ошибка обычно возникает, если функция недоступна в стадии вызывающего шейдера.

Is there a different technique that I should use?

Используйте шейдер константы для ширины и высоты текстуры. Он сохраняет инструкции в шейдере, что также может быть лучше по производительности.

+0

Спасибо Люциус, я перемещаю их в cbuffer. Хорошее решение. –

Смежные вопросы