0

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;たが、うまくいきませんでした。私は何が間違っているのですか?

4

1 に答える 1

0

今は動作します-私はCullModeを変更しました:

stat.CullMode = CullMode.None;

stat.CullMode = CullMode.CullCounterClockwiseFace;
于 2012-05-10T09:57:23.447 に答える