完全按书上的代码,调好后运行,发现旋转的不是一个立方体,而是一个非常奇怪的图形,还很大。
找了很久,发现他给的代码有点问题,主要是顶点结构的问题。
在SimpleShader.fx中,
//顶点着色器
VS_INPUT VS(float4 Pos: POSITION, float4 Color : COLOR)
{
VS_INPUT input = (VS_INPUT)0;
input.Pos = mul(Pos, World);
input.Pos = mul(input.Pos, View);
input.Pos = mul(input.Pos, Projection);
input.Color = Color;
return input;
}
Pos明明是float4的。
但是在d3dCube.cpp中,
struct Vertex
{
XMFLOAT3 Pos;
XMFLOAT4 Color;
};
Pos去是XMFLOAT3的。
所以在矩阵运算中会出现奇怪的错误,把d3dCube.cpp中XMFLOAT3改成XMFLOAT4,并且把顶点数组中顶点加上一维(, 1.0f)就好了。