Mam grę 2D, nad którą pracuję, która ma współczynnik proporcji 4: 3. Kiedy przełączam go na tryb pełnoekranowy na moim monitorze szerokoekranowym, rozciąga się. Próbowałem użyć dwóch rzutni, aby nadać czarnym tle miejsce, w którym gra nie powinna się rozciągać, ale to pozostawiło grę w tym samym rozmiarze jak wcześniej. Nie mogłem dostać tego, żeby wypełnić okno, które miało utrzymywać całą grę.Przejście do trybu pełnoekranowego bez rozciągania w grze XNA
Jak mogę go uruchomić, aby wyświetlał się w trybie pełnoekranowym bez rozciągania i bez konieczności modyfikowania każdej pozycji i wyciągania stwierdzeń w grze? Kod, którego używam dla rzutni, znajduje się poniżej.
// set the viewport to the whole screen
GraphicsDevice.Viewport = new Viewport
{
X = 0,
Y = 0,
Width = GraphicsDevice.PresentationParameters.BackBufferWidth,
Height = GraphicsDevice.PresentationParameters.BackBufferHeight,
MinDepth = 0,
MaxDepth = 1
};
// clear whole screen to black
GraphicsDevice.Clear(Color.Black);
// figure out the largest area that fits in this resolution at the desired aspect ratio
int width = GraphicsDevice.PresentationParameters.BackBufferWidth;
int height = (int)(width/targetAspectRatio + .5f);
if (height > GraphicsDevice.PresentationParameters.BackBufferHeight)
{
height = GraphicsDevice.PresentationParameters.BackBufferHeight;
width = (int)(height * targetAspectRatio + .5f);
}
//Console.WriteLine("Back: Width: {0}, Height: {0}", GraphicsDevice.PresentationParameters.BackBufferWidth, GraphicsDevice.PresentationParameters.BackBufferHeight);
//Console.WriteLine("Front: Width: {0}, Height: {1}", width, height);
// set up the new viewport centered in the backbuffer
GraphicsDevice.Viewport = new Viewport
{
X = GraphicsDevice.PresentationParameters.BackBufferWidth/2 - width/2,
Y = GraphicsDevice.PresentationParameters.BackBufferHeight/2 - height/2,
Width = width,
Height = height,
MinDepth = 0,
MaxDepth = 1
};
GraphicsDevice.Clear(Color.CornflowerBlue);
Poniższy obraz pokazuje, jak wygląda ekran. Czerń po bokach jest tym, czego chcę (i jest od pierwszego widoku), a drugi rzutnia to gra i obszar chabrowy niebieski. To, czego chcę, to doprowadzić grę do skali, aby wypełnić obszar chabrowy niebieski.
Być może zainteresuje Cię fakt, że istnieje strona wymiany Game Game Stack Exchange, na której możesz uzyskać lepszą odpowiedź: http://gamedev.stackexchange.com/ –