Hallo Leute,
ich hab gelesen, dass man in Java die Grafik mit OpenGL rendern lassen kann mithilfe von
. Ich habs ausprobiert, aber wenn ich es normal rendern lasse, benötigt es genau gleich viel Zeit (12 millis), wie wenn ich es mit OpenGL rendern lasse.
Test code:
Warum ist OpenGL nicht schneller?
ich hab gelesen, dass man in Java die Grafik mit OpenGL rendern lassen kann mithilfe von
Java:
System.setProperty("sun.java2d.opengl", "true");
Test code:
Java:
import java.awt.Color;
import java.awt.EventQueue;
import java.awt.Frame;
import java.awt.GradientPaint;
import java.awt.Graphics2D;
import java.awt.Paint;
import java.awt.RenderingHints;
import java.awt.Shape;
import java.awt.event.WindowEvent;
import java.awt.event.WindowListener;
import java.awt.geom.Ellipse2D;
import java.awt.geom.RoundRectangle2D;
import java.awt.image.BufferStrategy;
public class Main extends Frame implements WindowListener {
private boolean running = true;
private Paint fill;
private Paint stroke;
private Shape clip;
private Shape shape;
private String fps = "";
private BufferStrategy s;
public Main() {
setSize(1000, 600);
setIgnoreRepaint(true);
fill = new GradientPaint(0, 0, Color.blue, 1000, 600, Color.white);
stroke = Color.black;
clip = new Ellipse2D.Float(100, 100, 800, 450);
shape = new RoundRectangle2D.Float(200, 10, 900, 390, 30, 30);
addWindowListener(this);
setVisible(true);
createBufferStrategy(2);
s = getBufferStrategy();
while(true) {
long time = System.nanoTime();
Main.this.paintWindow();
fps = Long.toString(System.nanoTime() - time) + " nanos";
}
// new Thread(new Runnable() {
//
// public void run() {
// while(running) {
// long time = System.currentTimeMillis();
// Main.this.paintWindow();
// fps = Long.toString(System.currentTimeMillis() - time) + " millis";
// }
// }
// }).start();
}
public void paintWindow() {
Graphics2D g2 = (Graphics2D) s.getDrawGraphics();
g2.setPaint(Color.white);
g2.fillRect(0, 0, getWidth(), getHeight());
g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
g2.setPaint(fill);
Shape normal = g2.getClip();
g2.setClip(clip);
g2.fill(shape);
g2.setPaint(stroke);
g2.draw(shape);
g2.setClip(normal);
g2.setPaint(Color.black);
for(int x = 0; x < 18; x++) {
for(int y = 0; y < 50; y++) {
g2.drawString("OpenGL", x * 50 + 100, y * 30);
}
}
g2.drawString(fps, 10, 50);
g2.dispose();
s.show();
}
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
System.setProperty("sun.java2d.opengl", "true");
EventQueue.invokeLater(new Runnable() {
public void run() {
new Main().setVisible(true);
}
});
}
public void windowOpened(WindowEvent e) {
}
public void windowClosing(WindowEvent e) {
System.exit(0);
}
public void windowClosed(WindowEvent e) {
}
public void windowIconified(WindowEvent e) {
}
public void windowDeiconified(WindowEvent e) {
}
public void windowActivated(WindowEvent e) {
}
public void windowDeactivated(WindowEvent e) {
}
}