Hi!
I have trouble getting my game running in fullscreen… =(
When starting up the game should try to enter 800x600x32 fullscreen-mode, if thats not possible it should fallback to 800x600x32 windowed mode.
But now it’s allways running in windowed mode, what am i doing wrong?? Yes, i have read the Sun Java API FullScreen-stuff…
Below is the method setting up the screen. It’s get called by the constructor of the maingame class which extends Canvas.
I’m i missing something??
private void setupGameDisplay()
{
mGameWindow = new JFrame(“JPlane”); // Skapar spelfönstret.
mGameWindow.setDefaultCloseOperation(JFrame.DO_NOTHING_ON_CLOSE); // Vi lyssnar på WindowsClosing()-event istället, så att vi kan få stänga ner programmet själva.
// Sätter upp panelen i vilken spelet ritas upp.
JPanel gamePanel = (JPanel)mGameWindow.getContentPane();
gamePanel.setPreferredSize(new Dimension(getGameSettingsElement(WINDOW_WIDTH),getGameSettingsElement(WINDOW_HEIGHT)));
gamePanel.setLayout(null);
setBounds(0, 0, getGameSettingsElement(WINDOW_WIDTH), getGameSettingsElement(WINDOW_HEIGHT));
gamePanel.add(this);
setIgnoreRepaint(true); // Eftersom vi aktivt uppdaterar bildskärmen själva så är det onödigt att JVM också försöker.
setFocusable(true); // Se för säkerhetsskull till att vi kan få fokus.
requestFocus(); // Och begär sedan fokus.
mGameWindow.pack();
mGameWindow.setResizable(false); // Spelfönstret har en fix storlek.
mGameWindow.setVisible(true); // Visa fönstret.
// Ok, nu har vi ett fönster. Här näst testar vi om vi kan få spela i fullskärmsläge.
GraphicsEnvironment environment = GraphicsEnvironment.getLocalGraphicsEnvironment();
GraphicsDevice device = environment.getDefaultScreenDevice();
// Bildskärmsläget spelet är gjort för(800x600x32@unknown).
DisplayMode requestedDisplayMode = new DisplayMode(getGameSettingsElement(WINDOW_WIDTH), getGameSettingsElement(WINDOW_HEIGHT), 32, 0);
// Kontrollerar om spelet kan köras i fullskärmsläge, annars faller vi tillbaka till fönsterläge.
if (device.isFullScreenSupported())
{
DisplayMode currentDisplayMode = device.getDisplayMode(); // Hämtar nuvarande bildskärmsläge
// Om vi redan befinner oss i rätt bildskärmsläge(upplösning) skall vi bara skifta om till fullskärm.
if ((currentDisplayMode.getWidth() == requestedDisplayMode.getWidth()) && (currentDisplayMode.getHeight() == requestedDisplayMode.getHeight()) && (currentDisplayMode.getBitDepth() == requestedDisplayMode.getBitDepth()))
{
mGameWindow.setUndecorated(true); // Ta bort menyrader och annat i fullskärmsläge.
mOldDisplayMode = currentDisplayMode; // Spara undan nuvarande bildskärmsläge.
System.out.println("Skiftar till fullskärmsläge!");
device.setFullScreenWindow(mGameWindow); // Skifta till fullskärmsläge.
}
// Om vi inte befinner oss i rätt bildskärmsläge(upplösing) kontrollera om vi får skifta bildskärmsläge. Annars blir det fönsterläge..
else if (device.isDisplayChangeSupported())
{
DisplayMode[] avaibleModes = device.getDisplayModes(); // Hämtar alla bildskärmslägen som är tillgängliga
int index = 0;
// Loopar igenom och kontrollerar om vårt efterfrågade bildskärmsläge finns bland dessa.
while ((index < avaibleModes.length) && (!avaibleModes[index].equals(requestedDisplayMode)))
{
index++;
}
// Hittade vi vårt bildskärmsläge?? I så fall byt till det läget och skifta till fullskärmsläge.
if (currentDisplayMode.equals( requestedDisplayMode))
{
mGameWindow.setUndecorated(true); // Ta bort menyrader och annat i fullskärmsläge.
mOldDisplayMode = currentDisplayMode; // Spara undan nuvarande bildskärmsläge, så att vi kan gå tillbaka till denna när spelet avslutas.
System.out.println("Skiftar till fullskärmsläge!");
device.setFullScreenWindow(mGameWindow); // Skifta till fullskärmsläge.
System.out.println("Byter till önskad bildskärmsläge: " + requestedDisplayMode.getWidth() + "x" + requestedDisplayMode.getHeight() + "x" + requestedDisplayMode.getBitDepth());
device.setDisplayMode(requestedDisplayMode);
}
}
}
if (mOldDisplayMode == null)
System.out.println("Kunde inte växla till fullskärmsläge, spelet körs i fönsterläge i stället!");
createBufferStrategy(2); // 1st virtuell och 1st fysisk.
mStrategy = getBufferStrategy();
}