2013-08-20 79 views
0

我正在創建Windows Phone 8應用程序,並且正在使用相機。當我不使用任何着色器,我的C#代碼工作完美:使用SharpDX和DirectX工具包輸出純紅色的像素着色器

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(); 

我越來越攝像頭輸入實時。不過,我(只是想直通輸入)嘗試使用像素着色器:

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; 
} 

着色器運行正常,沒有例外等(在精靈批處理開始分配的話),但所有我紅色變成紅色。整個輸出是純紅的。可能是什麼原因?我對着色器不熟悉,我試圖瞭解它們是如何工作的,特別是對於採樣器。謝謝。

回答

2

如果我沒有錯,你需要得到BGRA格式的像素數據,而不是RGBA。你能檢查它是否適合你嗎?

您可以查看這篇文章。 Creating a Lens application that uses HLSL effects for filters

問候,

彼得Voloshyn

+0

我其實下面是文章:)反正,我從頭開始編寫代碼的某些部分後解決了這個問題,並沒有找到真正的原因,它可能是我當時再也看不到的一個錯誤。 –