1

現在、XNA 4を使用して昔ながらのゲームを開発しています。グラフィックスアセットは568x320の解像度(16/9の比率)に基づいており、ウィンドウの解像度(たとえば、1136x640)を変更したいのですが、グラフィックスは拡大せずに拡大縮小されます。それらはピクセルアスペクトを維持します。

どうすればこれに到達できますか?

4

2 に答える 2

2

やばい !!!!私はそれを持っている !spriteBatch.BeginメソッドでSamplerState.PointClampを指定するだけで、そのクールなピクセルのvisueleffet<3を維持できます。

spriteBatch.Begin(SpriteSortMode.Immediate,
                    BlendState.AlphaBlend, 
                    SamplerState.PointClamp,
                    null,
                    null,
                    null,
                    cam.getTransformation(this.GraphicsDevice));
于 2013-01-08T20:41:51.530 に答える
2

RenderTargetあなたはあなたの目標を達成するためにを使うことができます。考えられるすべての画面サイズに応じてレンダリングする必要はないようです。したがって、グラフィックがマウスなどの他のグラフィック機能に依存していない場合は、を使用してRenderTargetすべてのピクセルデータを描画します。実際の画面に描画して、画面を引き伸ばすことができます。

この手法は他の方法でも使用できます。ゲームでオブジェクトを描画するために使用しているので、オブジェクトのすべてのスプライトを計算しなくても、回転と位置を簡単に変更できます。

例:

void PreDraw() 
    // You need your graphics device to render to
    GraphicsDevice graphicsDevice = Settings.GlobalGraphicsDevice;
    // You need a spritebatch to begin/end a draw call
    SpriteBatch spriteBatch = Settings.GlobalSpriteBatch;
    // Tell the graphics device where to draw too
    graphicsDevice.SetRenderTarget(renderTarget);
    // Clear the buffer with transparent so the image is transparent
    graphicsDevice.Clear(Color.Transparent);

    spriteBatch.Begin();
    flameAnimation.Draw(spriteBatch);
    spriteBatch.Draw(gunTextureToDraw, new Vector2(100, 0), Color.White);

    if (!base.CurrentPowerUpLevel.Equals(PowerUpLevels.None)) {
        powerUpAnimation.Draw(spriteBatch);
    }
    // DRAWS THE IMAGE TO THE RENDERTARGET
    spriteBatch.Draw(shipSpriteSheet, new Rectangle(105,0, (int)Size.X, (int)Size.Y), shipRectangleToDraw, Color.White);


    spriteBatch.End();
    // Let the graphics device know you are done and return to drawing according to its dimensions
    graphicsDevice.SetRenderTarget(null);
    // utilize your render target
    finishedShip = renderTarget;
}

あなたの場合、RenderTarget568x320の寸法で初期化し、それに応じて描画し、他の可能なサイズについて心配しないことを忘れないでください。スプライトバッチにを与えRenderTargetて画面に描画すると、画像が「引き伸ばされ」ます。

編集:

申し訳ありませんが、私は質問をざっと読み、結果を「引き伸ばす」ことを望まないことを見逃しました。RenderTargetこれは、グラフィックスデバイスに応じて指定した寸法にファイナルを描画することで実現できます。

于 2013-01-08T14:16:44.693 に答える