2013-04-10 4 views
2

Я новичок в графическом программировании. Я наткнулся на случай, когда «ResourceView» создается из текстуры, а затем этот вид ресурсов устанавливается как VS Resource. Подводя итог:DirectX: Vertex Shader с использованием текстур

CreateTexture2D(D3D10_TEXTURE2D_DESC{ 640, 512, .... **ID3D10Texture2D_0c2c0f30**) 
CreateShaderResourceView(**ID3D10Texture2D_0c2c0f30**, ..., **ID3D10ShaderResourceView_01742c80**) 
VSSetShaderResources(0, 1, [**0x01742c80**]) 

Когда и какие случаи, когда мы используем текстур в вершинных шейдерах ?? Может ли кто-нибудь помочь?

Спасибо.

ответ

3

Это полностью зависит от эффекта, который вы пытаетесь достичь.

Если вы хотите покрасить свои вершины индивидуально, вы обычно будете использовать компонент цвета вершин. Но ничто не мешает вам выбирать цвет из текстуры. (За исключением того, что он, вероятно, медленнее.)

Кроме того, не позволяйте названию вас обмануть. Текстуры можно использовать намного больше, чем просто раскраски. Они в основном являются предварительно вычисляемыми функциями. Например, вы можете использовать Textue1D для подачи волновой функции для анимации одежды или покачивания травы/фольги. И поскольку это текстура, вы можете использовать другую волну для каждого объекта, который вы рисуете, без переключения шейдеров.

Разработчики Direct3D просто хотят предоставить вам максимальную гибкость. И это включает использование ресурсов текстуры во всех этапах шейдера.

+0

Фактически пример, который я вижу, в большинстве случаев используется «Texture1D». Так что вы можете дать несколько указателей на волновую функцию, о которой вы говорите. –

+1

Подумайте о синусоиде. Вместо вычисления 'float sinX = sin (x)' в шейдере вы просто выберете значение из текстуры поиска синусоиды: 'float sinX = FunctionTexture.Sample (Sampler, x) .r'. И поскольку функция не жестко закодирована в шейдере, вы можете использовать любые данные, которые вы можете упаковать в 1D-текстуру (константу, шум, градиент и т. Д.). В этом случае координата текстуры будет 'x'. Цвет пикселя - это значение функции 'f (x)'. – Lucius

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