2016-07-31 4 views
0

にターゲットとバックバッファをレンダリングし、次のように私のグラフィックスデバイスが設定されていますトラブル理解がmonogame

GraphicsDeviceManager = new GraphicsDeviceManager(GameBase.GameRef); 
GraphicsDeviceManager.PreferredBackBufferWidth = 640; 
GraphicsDeviceManager.PreferredBackBufferHeight = 480; 
GraphicsDeviceManager.ApplyChanges(); 

私はまさにバック好適バッファ幅手段を説明するGoogleでどこにも見つけることができません。

RenderTarget = new RenderTarget2D(
    GraphicsDeviceManager.GraphicsDevice, 
    640, 
    480, 
    false, 
    GraphicsDeviceManager.GraphicsDevice.PresentationParameters.BackBufferFormat, 
    DepthFormat.Depth24); 

私は640と480は、実際にターゲットが描かれているレンダリング方法に関して何を意味するかについてGoogleで何かを見つけることができません。

私はこのようなレンダーターゲットを設定します。

問題は、私がウィンドウのサイズを変更するとすべてが伸びてしまうことです。私はモノグラムがこれを引き起こすために何をしているのかを理解しようとしており、最後に解決策を見つけ出しています。私の窓が640×480で、PreferredBackBufferWidthと高さが480分の640で、ターゲットをレンダリング開始時に

は、私は例えば1920×1080にウィンドウのサイズを変更する場合は、すべてのものが、もはやそう何とかmonogame、伸び480分の640

ではありません640x480のテクスチャを画面の640x480の部分にレンダリングしていますが、値を変更したり、コードを変更したりしていません。

レンダリングターゲットを破棄して新しいウィンドウサイズで再作成するか、バックバッファの幅と高さを変更するか、またはその両方を行う必要がありますか?

私は非常に混乱しており、詳細に答えるのに十分な技術的なオンライン文書はありません。私はそれを理解した後、私はあなたが画面のサイズを変更したときに何も起こらないように、すべてが同じサイズになり、ウィンドウが私のものよりも大きいので、にレンダリングする。

+0

今すぐ確認できません。しかし、私が覚えている限り、両方のサイズを変更する必要があります。 RenderTargetが「あなたが既に描いた絵を投影している飛行機」である間に、「あなたが描いている紙」のバックバッファを考えてみましょう。だから、ストレッチをしたくない場合は、バックバッファーを変更して "紙"のスペースを増やし、次にRenderTargetを変更して実際に "図面を表示する場所"を変更する必要があります。 –

+0

シンプルなシナリオ例では、バックバッファのサイズをターゲットにする必要があります。 –

+0

XNAが生きていた日に、MSDNのスケルトンリファレンストピックではなく、XNAチュートリアルのヘルプを見つけるのは簡単でした。私が見つけることができる最高の[この記事](https://msdn.microsoft.com/en-us/library/bb195022.aspx)、そこにもアスペクト比に少しです。役に立つと思っています – MickyD

答えて

0

バックバッファは、画面に表示される特別なレンダーターゲットです。ウィンドウを塗りつぶすために引き伸ばされているため、ウィンドウのサイズが一致しない場合は拡大縮小されます。

ウィンドウサイズが変更されたときにバックバッファのサイズを変更できます。それが発生すると、Game.Window.ClientSizeChangedイベントが発生します(ユーザーがドラッグしてウィンドウのサイズを変更している場合、複数回発生することがあります)。そして、バックバッファのサイズを変更すると、RenderTargetはあなたがそれを使用しているかに依存して再作成するかどうか、単に

GraphicsDeviceManager.PreferredBackBufferWidth = Window.ClientBounds.Width; 
GraphicsDeviceManager.PreferredBackBufferHeight = Window.ClientBounds.Height; 
GraphicsDeviceManager.ApplyChanges(); 

です。

+0

私はウィンドウサイズに合わせて出力を伸ばすことができますが、これをオプションとしてオン/オフすることができます。時にはストレッチが必要な場合もありますが、時には画面のレンダリングが必要になることもあります(ゲームでもっとタイルが表示されるように)。恐らく両方とも同じサイズでなければならないでしょう。私はこれを試してみる。 – NibblyPig

関連する問題