广告牌在PC上画得不错,而不是在XBOX上

月亮是绘制两个绘制调用,但都绘制错误的Xbox,所以我只是简单地显示一个画。


这就是月亮在PC上的外观:

在这里输入图像描述

它在XBOX上的外观如何:

在这里输入图像描述

纹理闪烁,消失,看起来像从下到上的渐变,线条贯穿它,等等,随着相机的移动。 例如,稍微移动相机后,它看起来像这样: http : //olhovsky.com/xna/xbox_moon2.png

public void Draw(Camera cam) { GraphicsDevice gd = Game3.GDM.GraphicsDevice; Vector3 position = Position + cam.Position; Matrix world = Matrix.CreateScale(2.0f); world *= Matrix.CreateConstrainedBillboard( position, cam.Position, Vector3.Down, cam.Forward, null); _moonEffect2.Parameters["World"].SetValue(world); _moonEffect2.Parameters["View"].SetValue(cam.View); _moonEffect2.Parameters["Projection"].SetValue(cam.Projection); // Draw blended part of moon only. _moonEffect2.Parameters["AlphaTestDirection"].SetValue(-1); gd.BlendState = BlendState.AlphaBlend; gd.RasterizerState = RasterizerState.CullNone; gd.DepthStencilState = DepthStencilState.DepthRead; ScreenQuadDraw.DrawQuad(_moonQuad, _moonEffect2); } 

这是使用的着色器,这里没有任何复杂的: http : //www.olhovsky.com/xna/Moon.fx

有谁知道为什么纹理不能正确显示在Xbox上? 也许还有另外一个国家呢?

解决方法是从着色器中删除未使用的颜色input。

旧像素着色器:

 float4 PixelShaderFunction(float2 texCoord : TEXCOORD0, float4 color : COLOR0) : COLOR0 { color = tex2D(TextureSampler, texCoord); // Apply the alpha test. clip((color.a - AlphaTestThreshold) * AlphaTestDirection); return color; } 

新的像素着色器:

 float4 PixelShaderFunction(float2 texCoord : TEXCOORD0) : COLOR0 { float4 color = tex2D(TextureSampler, texCoord); // Apply the alpha test. clip((color.a - AlphaTestThreshold) * AlphaTestDirection); return color; }