TriangleStripsとして描画するいくつかの正方形の上に、Silverlight-PhoneApplicationPageとそのコントロールを描画したいと思います。
逆の方法は完全にうまく機能しますが、正方形は私のコントロールの上に描画されます-私は描画関数で次のようなことをします:
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);
}
}
三角形の後にspriteBatchを描画しようとすると、次のエラーが発生します。「NotSupportedException-XNA Framework Reachプロファイルでは、2の累乗ではないテクスチャサイズを使用する場合、TextureAddressModeをクランプする必要があります。」
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();
}
私も設定しようとしましgraphicsDevice.SamplerStates[i] = SamplerState.LinearClamp;
たが、うまくいきませんでした。私は何が間違っているのですか?