我在使用着色器时遇到了一些问题,而且我不断收到这个让我发疯的奇怪编译错误!
以下像素着色器代码片段:
DirectionVector = normalize(f3LightPosition[i] - PixelPos);
LightVec = PixelNormal - DirectionVector;
// Get the light strenght factor
LightStrFactor = float(abs((LightVec.x + LightVec.y + LightVec.z) / 3.0f));
// TEST!!!
LightStrFactor = 1.0f;
// Add this light to the total light on this pixel
LightVal += f4Light[i] * LightStrFactor;
效果很好,但只要我删除“LightStrFactor = 1.0f;” 行,即让'LightStrFactor'值作为上面计算的结果,它无法编译着色器。
LightStrFactor 是一个浮点数 LightVal & f4Light[i] 是 float4 其余的都是 float3。
我的问题是,除了为什么它不编译之外,DX 编译器是如何关心浮点值的?即使我的值不正确,它不应该是运行时的吗?着色器编译代码是这样的:
/* Compile the bitch */
if (FAILED(D3DXCompileShaderFromFile(fileName, NULL, NULL, "PS_MAIN", "ps_2_0", 0, &this->m_pCode, NULL, &this->m_constantTable)))
GraphicException("Failed to compile pixel shader!"); // <-- gets here :(
if (FAILED(g_D3dDevice->CreatePixelShader( (DWORD*)this->m_pCode->GetBufferPointer(), &this->m_hPixelShader )))
GraphicException("Failed to create pixel shader!");
this->m_fLoaded = true;
任何帮助表示感谢谢谢!!!:]