我是hlsl的新手。我正在尝试编写一个从RGB空间转换为YIQ空间(NTSC)的像素着色器。转换过程很好,但我似乎无法让采样器和tex2D返回除纹理左上角之外的任何颜色。我知道它必须是一个愚蠢的错误,但谷歌搜索让我更加困惑。
我已尝试声明纹理并使用sampler_state将其链接到sampler2D,但这似乎并没有改变任何东西。我正在使用运行DirectX 9和Pixel Shader 3.0的Ventuz。我有一个带有图像纹理的简单平面对象。我只是希望能够在浏览着色器后看到未触及的纹理,以便我可以尝试转换步骤。
Window IntPtrToWindow(IntPtr hwnd)
{
HwndSource hwndSource = HwndSource.FromHwnd(hwnd);
return (Window)hwndSource.RootVisual;
}
我做错了什么?
答案 0 :(得分:3)
您的顶点着色器不输出“TEXCOORD”属性,因此对于'uv'参数,Pixel Shader的输入将为(0,0),这就是为什么您只获得左上角的原因采样。
尝试输出“float2 uv:TEXCOORD”并将屏幕四边形的UV坐标设置为(0,0),(1,0),(1,1),(0,1)从左上角顺时针方向。