gpt4 book ai didi

c++ - YUV转RGB着色器边框神器

转载 作者:太空狗 更新时间:2023-10-29 23:02:14 24 4
gpt4 key购买 nike

我有 YUV 到 RGB 转换着色器。

struct Pixel_INPUT
{
float4 pos : SV_POSITION;
float2 tex : TEXCOORD0;
};

Texture2D textureY : register(t0);
Texture2D textureU : register(t1);
Texture2D textureV : register(t2);

SamplerState samstate
{
MinFilter = Anisotropic;
MagFilter = Anisotropic;
AddressU = Clamp;
AddressV = Clamp;
};

float4 PS(Pixel_INPUT input) : SV_Target
{
float y = (1.1643f * textureY.Sample(samstate,input.tex) - 0.0625f);
float u = textureU.Sample(samstate,input.tex) - 0.5f;
float v = textureV.Sample(samstate,input.tex) - 0.5f;

float r = y + 1.5958f * v;
float g = y - 0.39173f * u - 0.81290f * v;
float b = y + 2.017f * u;

return float4(r,g,b,1);
}

但是我在图像的右侧有一条绿线,如下所示: enter image description here

我使用 Clamp 地址模式,图像比原来的颜色更黄。

最佳答案

我有采样器状态

  samplerDesc.Filter   = D3D10_FILTER_ANISOTROPIC;
samplerDesc.AddressU = D3D10_TEXTURE_ADDRESS_MIRROR;
samplerDesc.AddressV = D3D10_TEXTURE_ADDRESS_MIRROR;
samplerDesc.AddressW = D3D10_TEXTURE_ADDRESS_MIRROR;
samplerDesc.MaxAnisotropy = 8;
samplerDesc.ComparisonFunc = D3D10_COMPARISON_NEVER;


pDevice->CreateSamplerState(&samplerDesc,&SampState);

关于 Y U 和 V 纹理分辨率:U 和 V 纹理分辨率始终是 Y 分辨率的一半。

关于c++ - YUV转RGB着色器边框神器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29197537/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com