Ich möchte die Silverlight-PhoneApplicationPage und ihre Steuerelemente auf einige Quadrate zeichnen, die ich als TriangleStrips zeichne.WP7/XNA/Silverlight: Wie kann ich einen SpriteBatch zeichnen, nachdem ich einen TriangleStrip gezeichnet habe?
Der andere Weg ist um funktioniert perfekt in Ordnung, aber die Plätze sind auf meine Kontrollen gezogen - ich etwas tun, wie dies in meiner Draw-Funktion:
private void OnDraw(object sender, GameTimerEventArgs e)
{
// Clean up device
graphicsDevice.Clear(Microsoft.Xna.Framework.Color.Black);
graphicsDevice.BlendState = BlendState.AlphaBlend;
RasterizerState stat = new RasterizerState();
stat.CullMode = CullMode.None;
graphicsDevice.RasterizerState = stat;
// Draw Silverlight UI element to Texture
elementRenderer.Render();
// Draw Silverlight UI element
spriteBatch.Begin();
spriteBatch.Draw(elementRenderer.Texture, Vector2.Zero, Microsoft.Xna.Framework.Color.White);
spriteBatch.End();
effect.Texture = tex;
effect.TextureEnabled = true;
effect.World = BillboardMatrix;
effect.View = view;
effect.Projection = projection;
foreach (EffectPass pass in effect.CurrentTechnique.Passes)
{
pass.Apply();
graphicsDevice.DrawUserPrimitives<VertexPositionTexture>(PrimitiveType.TriangleStrip, vertices, 0, 2);
}
}
Wenn ich versuche, die Spritebatch zu ziehen nach die Dreiecke bekomme ich diesen Fehler: "NotSupportedException - XNA Framework Reach-Profil erfordert TextureAddressMode zu Clamp, wenn Texturgrößen, die nicht Potenzen von zwei sind."
private void OnDraw(object sender, GameTimerEventArgs e)
{
// Clean up device
graphicsDevice.Clear(Microsoft.Xna.Framework.Color.Black);
graphicsDevice.BlendState = BlendState.AlphaBlend;
RasterizerState stat = new RasterizerState();
stat.CullMode = CullMode.None;
graphicsDevice.RasterizerState = stat;
// Draw Silverlight UI element to Texture
elementRenderer.Render();
effect.Texture = tex;
effect.TextureEnabled = true;
effect.World = BillboardMatrix;
effect.View = view;
effect.Projection = projection;
foreach (EffectPass pass in effect.CurrentTechnique.Passes)
{
pass.Apply();
graphicsDevice.DrawUserPrimitives<VertexPositionTexture>(PrimitiveType.TriangleStrip, vertices, 0, 2);
}
// Draw Silverlight UI element
spriteBatch.Begin();
spriteBatch.Draw(elementRenderer.Texture, Vector2.Zero, Microsoft.Xna.Framework.Color.White);
spriteBatch.End();
}
Ich habe auch versucht graphicsDevice.SamplerStates[i] = SamplerState.LinearClamp;
zu setzen, aber es hat nicht funktioniert. Was mache ich falsch?