Code:250 FPS mit Fullscreenantialising 1024x768

Status
Nicht offen für weitere Antworten.

strati1991

Neues Mitglied
Code:
/**
 * Copyright by Christoph Heidelmann(C) Datum: 27.03.2008
 */
import java.awt.DisplayMode;
import java.awt.Frame;
import java.awt.Graphics2D;
import java.awt.GraphicsConfiguration;
import java.awt.GraphicsDevice;
import java.awt.GraphicsEnvironment;
import java.awt.RenderingHints;
import java.awt.Window;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.awt.image.BufferStrategy;
import java.awt.image.ImageObserver;
import java.awt.image.VolatileImage;
import java.util.HashMap;
import java.util.Map;

  
public class FullScreen {
	    Boolean doit = true;
	    GraphicsEnvironment graphicsEnvironment = GraphicsEnvironment.getLocalGraphicsEnvironment();
	    GraphicsDevice myDevice = graphicsEnvironment.getScreenDevices()[0];
	    Window myWindow;
	    DisplayMode newDisplayMode;
	    BufferStrategy strategy;
	    Frame mainFrame = null;
	    long StartZeit;
	    Map<RenderingHints.Key,Object> m = new HashMap<RenderingHints.Key, Object>();
	    String text = "";
	    public FullScreen()
	    {
	        final GraphicsConfiguration gc = myDevice.getDefaultConfiguration(); 
	        mainFrame = new Frame(gc);
	        mainFrame.setUndecorated(true);
	        mainFrame.setIgnoreRepaint(true);
	        mainFrame.setResizable(false);
	        mainFrame.enableInputMethods(false);
	        myDevice.setFullScreenWindow(mainFrame);    
	        m.put(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
	        m.put(RenderingHints.KEY_COLOR_RENDERING, RenderingHints.VALUE_COLOR_RENDER_SPEED);
	        m.put(RenderingHints.KEY_RENDERING, RenderingHints.VALUE_RENDER_SPEED);
	        m.put(RenderingHints.KEY_INTERPOLATION, RenderingHints.VALUE_INTERPOLATION_NEAREST_NEIGHBOR);
	        m.put(RenderingHints.KEY_DITHERING, RenderingHints.VALUE_DITHER_DISABLE);
	        m.put(RenderingHints.KEY_ALPHA_INTERPOLATION, RenderingHints.VALUE_ALPHA_INTERPOLATION_SPEED);
	        m.put(RenderingHints.KEY_TEXT_ANTIALIASING, RenderingHints.VALUE_TEXT_ANTIALIAS_OFF);
	        m.put(RenderingHints.KEY_STROKE_CONTROL, RenderingHints.VALUE_STROKE_PURE);
	        m.put(RenderingHints.KEY_FRACTIONALMETRICS, RenderingHints.VALUE_FRACTIONALMETRICS_OFF);
	        mainFrame.addKeyListener(new KeyListener(){

				public void keyPressed(KeyEvent arg0) {
				}

				public void keyReleased(KeyEvent arg0) {
				
				}

				public void keyTyped(KeyEvent arg0) {
				
				}
	        	
	        });
	        int frame = 0;
	        StartZeit = System.currentTimeMillis();
	        long acttime = 0;
	        long fps = 0;
	        DisplayMode dm = new DisplayMode(1024, 768, 32, DisplayMode.REFRESH_RATE_UNKNOWN);
	        myDevice.setDisplayMode(dm);
	        Graphics2D backbuffer = (Graphics2D) mainFrame.getGraphics();
	        backbuffer.setRenderingHints(m);
	        Graphics2D g;
	        ImageObserver io = mainFrame;
	        while(true){
	        	VolatileImage vi = mainFrame.createVolatileImage(1024,768);
	        	g = (Graphics2D) vi.createGraphics();
	        	g.setRenderingHints(m);
	            if(acttime>StartZeit+1000){
	            	StartZeit = System.currentTimeMillis();
	            	fps = frame;
	            	frame = 0;
	            }
	            g.drawString("fps: " +fps , 20, 10);
	            frame++;
	            backbuffer.drawImage(vi, 0, 0, io);
	            acttime = System.currentTimeMillis();
	        }
	    }
	    public static void main(String[] args){
	    	new FullScreen();
	    }
	    
}
 
G

Gast

Gast
bekomm einen error. läuft wohl nur unter windows. habe fedora linux....
 

Quaxli

Top Contributor
So gesehen macht das Programm ja nix... . Sinn und Zweck eines leeren Fensters mit hoher FPS-Zahl ist mir nicht ganz klar ;)
 
C

Chris H.

Gast
Ich wollt ja nur mal zeigen das man mit java2d auch recht schnelle 2d grafiken machen kann und wie das geht.
Vielleicht kann ja jemand diesen code sinnvoll nutzen.
 

AlArenal

Top Contributor
Chris H. hat gesagt.:
Ich wollt ja nur mal zeigen das man mit java2d auch recht schnelle 2d grafiken machen kann und wie das geht.
Vielleicht kann ja jemand diesen code sinnvoll nutzen.

Klar, wir ändern den Hintergrund auf schwarz und bringen das Spiel "Das schwarze Loch" raus, das einfach nur aus einem leeren Bildschirm besteht. Wird sicher ein Kassenschlager...
 

Quaxli

Top Contributor
Schon gemein das alles...., aber wir sind manchmal sehr böse hier. ;)

@Chris H.:
Du könntest wenigstens noch eine Animation rein packen und wenn es erstmal nur grafische Elemente, wie z. B. Rechtecke sind (aber bitte mehr als eins). Dann hast Du keinesfalls mehr 250 FPS, aber wenn diese dann immer noch recht hoch sind, haben wir wenigstens ein konkretes Beispiel im Forum, das vorzeigbar ist.
 
Status
Nicht offen für weitere Antworten.

Ähnliche Java Themen

Neue Themen


Oben