0
我認爲我很愚蠢,因爲我無法弄清楚在最簡單的情況下導致問題的原因。渲染爲紋理的結果僅在着色器中爲空
項目類型是Windows OpenGL(在Android上,問題仍然存在)。
這裏是着色器:
//----------------------------------------------------------------------------
float4 PSTest (float2 TexCoords : TEXCOORD0) : COLOR0
{
float4 color = float4 (1, 0, 0, 1);
return color;
}
//----------------------------------------------------------------------------
Technique Test
{
pass Test
{
PixelShader = compile ps_2_0 PSTest();
}
}
,如果我把它與Texture
(128×128)繪製到屏幕上正常工作:
Shader.CurrentTechnique = Shader.Techniques["Test"];
GraphicsDevice.SetRenderTarget (null);
GraphicsDevice.Clear (Color.White);
Batch.Begin (SpriteSortMode.Immediate, BlendState.Opaque,
SamplerState.PointClamp, DepthStencilState.None, null, Shader);
Batch.Draw (Texture, Vector2.Zero, Color.White);
Batch.End();
現在我決定畫它進入渲染目標Output
由代碼創建:
new RenderTarget2D (GraphicsDevice, 256, 256, false,
SurfaceFormat.Color, DepthFormat.None);
抽獎代碼:
// Render into Output
Shader.CurrentTechnique = Shader.Techniques["Test"];
GraphicsDevice.SetRenderTarget (Output);
GraphicsDevice.Clear (Color.DimGray);
Batch.Begin (SpriteSortMode.Immediate, BlendState.Opaque,
SamplerState.PointClamp, DepthStencilState.None, null, Shader);
Batch.Draw (Texture, Vector2.Zero, Color.White);
Batch.End();
// Draw Output
GraphicsDevice.SetRenderTarget (null);
GraphicsDevice.Clear (Color.White);
Batch.Begin();
Batch.Draw (Output, Vector2.Zero, Color.White);
Batch.End();
但結果是完全荒謬的:
我已經嘗試了不同的最簡單的着色器,SurfaceFormat.HdrBlendable,紋理尺寸 - 但沒有什麼幫助。
此外,我曾嘗試畫Texture
(瀰漫着紫色)到渲染目標無着色(然後到屏幕)和它工作正常。
好像我已經錯過了一些基本知識:在XNA着色器的事情,但我無法弄清楚它是什麼。