所以我的教授给了我们班级的代码来帮助我们学习 Vector3D 绘图、定位和运动。代码最初是用 XNA 3.1 编写的,我们学校的实验室仍然使用 XNA 3.1,但是,我在笔记本电脑上做所有事情。我的笔记本电脑有 Visual Studio 2012(我有 2013 但还没有移动 XNA)。我已经找出并修复了除一个错误之外的所有错误。每当我调试和运行游戏时,我都会收到此错误:
Error 1 Errors compiling C:\Users\Nicholas\Documents\Visual Studio 2013\Projects\MGH05_PrimitiveObjects\MGH05_PrimitiveObjects\Content\Shaders\PositionColor.fx:
C:\Users\Nicholas\Documents\Visual Studio 2013\Projects\MGH05_PrimitiveObjects\MGH05_PrimitiveObjects\Content\Shaders\PositionColor.fx(27,6): error X3000: syntax error: unexpected token 'VertexShader' C:\Users\Nicholas\Documents\Visual Studio 2013\Projects\MGH05_PrimitiveObjects\MGH05_PrimitiveObjects\Content\Content\Shaders\PositionColor.fx 27 6 MGH05_Win_PrimitiveObjects
我的教授没有帮助,谷歌也没有。有人知道如何解决这个问题吗?这是着色器(PositionColor.fx)代码:
float4x4 wvpMatrix : WORLDVIEWPROJ;
struct VSinput
{
float4 position : POSITION0;
float4 color : COLOR0;
};
struct VStoPS
{
float4 position : POSITION0;
float4 color : COLOR0;
};
struct PSoutput
{
float4 color : COLOR0;
};
// alter vertex inputs
void VertexShader(in VSinput IN, out VStoPS OUT)
{
// transform vertex
OUT.position = mul(IN.position, wvpMatrix);
OUT.color = IN.color;
}
// alter vs color output
void PixelShader(in VStoPS IN, out PSoutput OUT)
{
float4 color = IN.color;
OUT.color = clamp(color, 0, 1); // range between 0 and 1
}
// the shader starts here
technique BasicShader
{
pass p0
{
// declare & initialize ps & vs
vertexshader = compile vs_1_1 VertexShader();
pixelshader = compile ps_1_1 PixelShader();
}
}
当我重命名 VertexShader 时,我仍然收到错误,但现在使用 PixelShader。当我重命名它们时,它仍然给我 VertexShader 错误。
如果有人有任何想法,请告诉我!另外,如果在错误的堆栈网站上提出此问题,我深表歉意。我认为这将是合适的地方。如果您需要任何额外信息,请告诉我!
提前致谢!