Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/symfony/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Windows phone 8 使用SharpDX和DirectX工具箱输出纯红色的像素着色器_Windows Phone 8_Windows Phone_Pixel Shader_Sharpdx - Fatal编程技术网

Windows phone 8 使用SharpDX和DirectX工具箱输出纯红色的像素着色器

Windows phone 8 使用SharpDX和DirectX工具箱输出纯红色的像素着色器,windows-phone-8,windows-phone,pixel-shader,sharpdx,Windows Phone 8,Windows Phone,Pixel Shader,Sharpdx,我正在创建一个Windows Phone 8应用程序,我正在使用摄像头。当我不使用任何着色器时,我的C#代码可以完美地工作: void photoDevice_PreviewFrameAvailable(ICameraCaptureDevice sender, object args) { sender.GetPreviewBufferArgb(captureData); previewTexture.SetData<int>(

我正在创建一个Windows Phone 8应用程序,我正在使用摄像头。当我不使用任何着色器时,我的C#代码可以完美地工作:

    void photoDevice_PreviewFrameAvailable(ICameraCaptureDevice sender, object args)
    {    
        sender.GetPreviewBufferArgb(captureData);
        previewTexture.SetData<int>(captureData);
    }
...
    spriteBatch.Begin();
    spriteBatch.Draw(previewTexture, new Vector2(backBufferXCenter, backBufferYCenter), null, Color.White, (float)Math.PI / 2.0f,
        new Vector2(textureXCenter, textureYCenter), new Vector2(xScale, yScale), SpriteEffects.None, 0.0f);
    spriteBatch.End();

着色器运行良好(在sprite批处理开始时指定),没有异常等,但我得到的只是红色。整个输出为纯红色。原因可能是什么?我是一个新的着色器,我试图了解他们如何工作,特别是与采样器。谢谢。

如果我没说错,您需要获取BGRA格式的像素数据,而不是RGBA格式的像素数据。你能检查一下它是否适合你吗

你可以查看这篇文章。

问候,


Pieter Voloshyn

我实际上是在看那篇文章:)无论如何,我在从头开始编写了部分代码后解决了它,但从未找到真正的原因,这可能是一个我当时从未见过的bug。
Texture2D MyTexture : register(t0);
sampler textureSampler = sampler_state{
 Texture = (MyTexture);
 Filter = MIN_MAG_MIP_LINEAR;
};
...
float4 pixelShader(float4 color : COLOR0,
                     float2 texCoord : TEXCOORD0) : SV_Target0
{
   float4 textureColor = tex2D(textureSampler, texCoord);
   return textureColor;
}