Graphics DirectX:使用纹理的顶点着色器

Graphics DirectX:使用纹理的顶点着色器,graphics,3d,directx,textures,vertex-shader,Graphics,3d,Directx,Textures,Vertex Shader,我是图形编程的初学者。我遇到了一个例子,其中一个“ResourceView”是用纹理创建的,然后这个资源视图被设置为VS resource。总结如下: CreateTexture2D( D3D10_TEXTURE2D_DESC{ 640, 512, .... **ID3D10Texture2D_0c2c0f30** ) CreateShaderResourceView( **ID3D10Texture2D_0c2c0f30**, ..., **ID3D10ShaderResourceView_0

我是图形编程的初学者。我遇到了一个例子,其中一个“ResourceView”是用纹理创建的,然后这个资源视图被设置为VS resource。总结如下:

CreateTexture2D( D3D10_TEXTURE2D_DESC{ 640, 512, .... **ID3D10Texture2D_0c2c0f30** )
CreateShaderResourceView( **ID3D10Texture2D_0c2c0f30**, ..., **ID3D10ShaderResourceView_01742c80** )
VSSetShaderResources( 0, 1, [**0x01742c80**])
在顶点着色器中使用纹理的时间和情况是什么??有人能帮忙吗


谢谢。

这完全取决于你想要达到的效果

如果要单独为顶点着色,通常会使用顶点颜色组件。但是没有什么可以阻止您从纹理中采样颜色。(只是速度可能较慢。)

还有,别让这个名字骗了你。纹理不仅仅可以用于着色。它们基本上是预计算的函数。例如,您可以使用
Textue1D
提交波函数来设置衣服或摇摆草/箔的动画。由于它是一种纹理,您可以对绘制的每个对象使用不同的波浪,而无需切换着色器


Direct3D开发人员只是想为您提供最大的灵活性。这包括在所有着色器阶段使用纹理资源。

实际上,我看到的示例,大多数情况下,他们使用的是
Texture1D
。那么,你能不能就你所说的波函数给出更多的指示,想想正弦波。与在着色器中计算
float sinX=sin(x)
不同,您只需从正弦函数查找纹理中采样值:
float sinX=FunctionTexture.sample(Sampler,x).r
。由于该函数未在着色器中硬编码,因此您可以使用任何可以打包到1D纹理中的数据(常量、噪波、渐变等)<在这种情况下,code>x将是纹理坐标。像素的颜色是函数值
f(x)