首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >HLSL -组合纹理

HLSL -组合纹理
EN

Stack Overflow用户
提问于 2011-03-15 16:06:55
回答 1查看 2.9K关注 0票数 1

我正在尝试在HLSL中组合两个纹理-具体地说,我想从基础图像中获取alpha值,并从叠加图像中获取颜色数据。

我的像素着色器如下所示:

代码语言:javascript
复制
float4 PixelShaderFunction(VertexOut input) : COLOR0
{
    float4 baseColor = tex2D( BaseSampler, input.baseCoords.xy ).rgba;
    float4 overlayColor = tex2D( OverlaySampler, input.overlayCoords.xy ).rgba;

    float4 color;
    color.r = overlayColor.r;
    color.g = overlayColor.g;
    color.b = overlayColor.b;
    color.a = baseColor.a;

    return color.rgba;
}

我的混合状态是这样的:

代码语言:javascript
复制
    BlendState bs = new BlendState();
    bs.AlphaSourceBlend = Blend.SourceAlpha;
    bs.AlphaDestinationBlend = Blend.DestinationAlpha;
    bs.ColorSourceBlend = Blend.SourceColor;
    bs.ColorDestinationBlend = Blend.DestinationColor;

这给我留下的是一个冲刷掉的版本,应该是覆盖的颜色。我已经尝试了许多BlendState设置的排列,并尝试了相当多的像素着色器数学,但都没有用。

有谁能给我指个方向吗?

提前感谢=)

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-03-15 16:13:11

我不知道C#是如何处理这些东西的,但一般来说,您会希望

代码语言:javascript
复制
AlphaSourceBlend = SrcAlpha
AlphaDestinationBlend = InvSrcAlpha

(C#将其分别称为SourceAlpha和InvSourceAlpha )。显然,你会想要启用alpha混合,但我确信你已经做到了。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5308961

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档