|
|
我在D3D中声明了一个顶点格式为
struct vertex
{
float x,y,z,w;
float u,v;
};
并以下面的声明在D3D中定义了它
D3DVERTEXELEMENT9 decl[] =
{
{0, 0, D3DDECLTYPE_FLOAT4, D3DDECLMETHOD_DEFAULT, D3DDECLUSAGE_POSITION, 0},
{0, 16, D3DDECLTYPE_FLOAT2, D3DDECLMETHOD_DEFAULT, D3DDECLUSAGE_TEXCOORD, 0},
D3DDECL_END()
};
在渲染前已经在VB中写入了值,并设定了流及纹理。但是在HLSL的入口函数中却取不到UV的纹理的值。
入口函数如下:
struct VS_OUTPUT
{
float4 Position : POSITION; // vertex position
float4 Diffuse : COLOR0; // vertex diffuse color
float2 uv : TEXCOORD0;
};
VS_OUTPUT main( in float4 pos : POSITION, in float2 UV : TEXCOORD0)
{
VS_OUTPUT Output;
Output.Position = mul(pos, ViewProjMatrix);
Output.Diffuse = co;
Output.uv = UV;
return Output;
}
想问一下,是什么原因导致了这样的情况,因为POSITION的值是正确的传入到VS中了的,但TEXCOORD0却没有传入。
[em7] |
|