我正在使用 SharpDX api 为 Windows Phone 8 / Windows 8 创建一个图像编辑器,并尝试将自定义效果 (SharpDX.Toolkit.Graphics.Effect) 应用于 WriteableBitmap。
效果本身已应用,但结果看起来很奇怪。在我看来,纹理被减少和倒置。
应用效果的代码写在下面。
private void ApplyEffect()
{
GraphicsDevice graphicsDevice = GraphicsDevice.New();
RenderTarget2D renderTarget = RenderTarget2D.New( graphicsDevice, _originalBitmap.PixelWidth, _originalBitmap.PixelHeight, PixelFormat.B8G8R8A8.UNorm );
Texture2D texture = Texture2D.New( graphicsDevice, _originalBitmap.PixelWidth, _originalBitmap.PixelHeight, PixelFormat.B8G8R8A8.UNorm );
texture.SetData<int>( _originalBitmap.Pixels );
Effect effect = new Effect( graphicsDevice, SimpleEffectTest.Effects.Invert.EffectBytecode );
graphicsDevice.SetRenderTargets( renderTarget );
SpriteBatch spriteBatch = new SpriteBatch( graphicsDevice );
spriteBatch.Begin( SpriteSortMode.Deferred, effect );
spriteBatch.Draw( texture, Vector2.Zero, Color.White );
spriteBatch.End();
renderTarget.GetData<int>( _resultBitmap.Pixels );
}
你知道我在这里做错了什么吗?
此致,
彼得·沃洛申
- - 更新 - -
经过多次测试,我终于发现我做错了什么。我更改了主要的像素着色器函数参数。
从
float4 PS(
float4 pos : SV_POSITION,
float4 posScene : SCENE_POSITION,
float2 texCoord : TEXCOORD0
) : SV_TARGET0
至
float4 PS(
float4 color : COLOR0,
float2 texCoord : TEXCOORD0
) : SV_Target
谢谢!