我在hlsli中有一个常用方法
/// RendererShaderTypes.hlsli
///
static inline float4 OverlayColor(float2 texOverlay, float4 videoColor)
{
float4 texColor = float4(imageMixTexture[4].Sample(imageMixSampler[4], texOverlay));
if (texColor.r == keyColor.r &&
texColor.g == keyColor.g &&
texColor.b == keyColor.b)
{
return videoColor;
}
return lerp(texColor, videoColor, transparency);
}
从多个hlsl像素着色器中调用它。
#include "RendererShaderTypes.hlsli"
float4 main(PSPosTexOverlay input) : SV_TARGET
{
return OverlayColor(input.texOverlay, backColor);
}
也被调用到另一个像素着色器
#include "RendererShaderTypes.hlsli"
float4 main(PSPosVideoTexture input) : SV_TARGET
{
// lookup color of video
float4 mixColor = mul(colorMatrix[0], VideoColor(imageMixSampler[0], imageMixTexture[0], input.texImage));
mixColor.rgb *= mixColor.a;
mixColor.a = 1.0f;
return OverlayColor(input.texOverlay, mixColor);
}
编译时显示以下警告。知道为什么会显示吗?
警告X4000:使用可能未初始化的变量(OverlayColor)
答案 0 :(得分:0)
我不知道任何令人满意的原因,但我已经解决了这个问题。任何调用中间函数return语句的函数都会在编译过程中显示警告。我这样重写了上面的其中之一,警告消失了。
eli5