Testirao sam jednostavnim shaderom:
SHADER_CODE
uniform extern float4x4 g_matWVP;
void LightingVS(float3 posL : POSITION0, float2 texCoord : TEXCOORD0,
out float4 oPosH : POSITION0, out float2 oTexCoord : TEXCOORD0)
{
oPosH = mul( float4( posL, 1.0f ), g_matWVP );
oTexCoord = texCoord;
}
float4 LightingPS(float2 texCoord : TEXCOORD0) : COLOR0
{
float4 color = 0;
#ifdef COLOR_RED
color = float4(1.0f, 0.0f, 0.0f, 1.0f);
#endif
#ifdef COLOR_BLUE
color = float4(0.0f, 0.0f, 1.0f, 1.0f);
#endif
return color;
}
technique techLighting
{
pass p0
{
vertexshader = compile vs_2_0 LightingVS();
pixelshader = compile ps_2_0 LightingPS();
}
}
APP_CODE
D3DXMACRO m;
m.Name = "COLOR_RED";
m.Definition = "1";
D3DXCreateEffectFromFile(m_pDevice, L"Shaders/Lighting.fx", &m, 0, 0, 0, &m_pLightingShader, &errors);
Problem je sto se shader ne ucitava, cak i ne prodje ovu (D3DXCreateEffectFromFile) liniju (aplikacija puca) tako da ne mogu da vidim compilation errors.
Bez ovih definicija shader radi ok.
U C++, kao sto znamo, je dovoljno napisati #define COLOR_RED ali posto D3DXMACRO zahteva i Definition parametar ja sam stavio 1.
Ne znam gde gresim.