1

私は XNA の初心者で、Windows 用の新しい kinect を試しているので、チュートリアルに従うことにしました

これを行った後、すべての色が水色に染まっていることに気付きました。たとえば、rgb 20,20,20 の色は、濃い灰色ではなく濃い青に見えます。

GraphicsDevice.Clear()が を使用していることに気付きましたColor.CornflowerBlue。私はそれをに変更して実験しましたがColor.Black、確かにすべてのものは黒く着色されています。

GraphicsDevice.Clear(color) と画面に描画される色との関係は何ですか?

ここに私の描画機能があります:

/// <summary>
/// This is called when the game should draw itself.
/// </summary>
/// <param name="gameTime">Provides a snapshot of timing values.</param>
protected override void Draw(GameTime gameTime)
{
    GraphicsDevice.Clear(Color.Black);

    spriteBatch.Begin();
    spriteBatch.Draw(kinectRGBVideo, new Rectangle(0, 0, 640, 480), Color.White);
    spriteBatch.DrawString(font, connectedStatus, new Vector2(20, 80), Color.Black);
    spriteBatch.End();

    base.Draw(gameTime);
}
4

1 に答える 1

3

(リクエストに応じて、回答の形で。)

spriteBatch.Begin() メソッドの呼び出しで BlendState を変更してみてください。これにより、互いに重ねて描画したときに色がどのようにブレンドされるかが決まります。

がテキストをブロックとして表示する理由は正確にはわかりませんBlendState.Opaqueが、私の推測では、このブレンド状態はアルファをサポートしていません。したがって、テキストの周囲の透明な領域が不透明になり、テキストが長方形のように見えます。今のところ、この推測を確認するためのツールを持っていないので、確認できます。

于 2012-07-31T06:54:40.787 に答える