[ glorius @ 26.03.2010. 17:53 ] @
Pokusavam da iskoristim direktive u shaderu tako sto ih definisem pomocu D3DXMACRO strukture. Testirao sam jednostavnim shaderom: Code: 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(); } } Code: 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. |