Hallo Java Forum Community,
ich programmiere jetzt seit einigen Tagen an einem erst einmal kleinen 2D Jump and Run rum.
Ich habe die Engine soweit fertig, diese basiert auf den Java Graphics Klassen zum zeichnen von Formen laden von Texturen usw.
Da ich davor mich etwas mit LWJGL und der 3D Programmierung (für eine Facharbeit), beschäftigt habe habe ich dort einige Erfahrungen gemacht, und für ein Partikel System reicht es.
Jetzt würde ich gerne LWJGL mit meinem jetzigen 2D Spiel in verbinden bringen um zum Beispiel die Licht Berechnungen zu machen oder meinem Partikel System mit den LWJGL Shadern einen besseren Look zu verschaffen, nun mein Problem ist ich weiß nicht recht wie ich das anstellen soll, ich kann beide Sachen programmieren aber zum Beispiel bei meiner GamePanel Klasse wo das gesamte Spiel gezeichnet wird ist es ja in LWJGL etwas anders als bei einem reinen Java 2D Spiel und jetzt meine Frage: Muss ich den ganzen Code nochmal neu in LWJGL schreiben oder kann ich das auch anders machen?
Beispiel Klasse (Java 2D Spiel):
ich programmiere jetzt seit einigen Tagen an einem erst einmal kleinen 2D Jump and Run rum.
Ich habe die Engine soweit fertig, diese basiert auf den Java Graphics Klassen zum zeichnen von Formen laden von Texturen usw.
Da ich davor mich etwas mit LWJGL und der 3D Programmierung (für eine Facharbeit), beschäftigt habe habe ich dort einige Erfahrungen gemacht, und für ein Partikel System reicht es.
Jetzt würde ich gerne LWJGL mit meinem jetzigen 2D Spiel in verbinden bringen um zum Beispiel die Licht Berechnungen zu machen oder meinem Partikel System mit den LWJGL Shadern einen besseren Look zu verschaffen, nun mein Problem ist ich weiß nicht recht wie ich das anstellen soll, ich kann beide Sachen programmieren aber zum Beispiel bei meiner GamePanel Klasse wo das gesamte Spiel gezeichnet wird ist es ja in LWJGL etwas anders als bei einem reinen Java 2D Spiel und jetzt meine Frage: Muss ich den ganzen Code nochmal neu in LWJGL schreiben oder kann ich das auch anders machen?
Beispiel Klasse (Java 2D Spiel):
Code:
import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.RenderingHints;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.ComponentEvent;
import java.awt.event.ComponentListener;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.awt.event.MouseEvent;
import java.awt.event.MouseListener;
import java.awt.image.VolatileImage;
import javax.swing.JPanel;
import javax.swing.Timer;
public class GamePanel extends JPanel implements ComponentListener, ActionListener, KeyListener, MouseListener {
private static final long serialVersionUID = 1L;
public static int width;
public static int height;
public static final int SCALE = 3;
public static Mouse mouse;
private Timer timer;
private GameStateManager gsm;
private VolatileImage image;
public GamePanel() {
super();
setPreferredSize(new Dimension(600, 400));
addComponentListener(this);
addMouseListener(this);
addKeyListener(this);
setFocusable(true);
requestFocus();
mouse = new Mouse(this);
width = getPreferredSize().width;
height = getPreferredSize().height;
gsm = new GameStateManager(GameStateManager.PLAYSTATE);
}
@Override
public void addNotify() {
super.addNotify();
image = createVolatileImage(width / SCALE, height / SCALE);
timer = new Timer(1000 / 60, this);
timer.start();
}
private void update() {
gsm.update();
}
@Override
public void paintComponent(Graphics g) {
super.paintComponent(g);
Graphics2D g2 = image.createGraphics();
g2.setBackground(new Color(146, 189, 221));
g2.setRenderingHint(RenderingHints.KEY_ANTIALIASING, RenderingHints.VALUE_ANTIALIAS_ON);
g2.setRenderingHint(RenderingHints.KEY_TEXT_ANTIALIASING, RenderingHints.VALUE_TEXT_ANTIALIAS_ON);
gsm.render(g2);
g.drawImage(image, 0, 0, width, height, null);
}
@Override
public void actionPerformed(ActionEvent arg0) {
update();
repaint();
}
@Override
public void mousePressed(MouseEvent e) {
gsm.mousePressed(e);
}
@Override
public void mouseReleased(MouseEvent e) {
gsm.mouseReleased(e);
}
@Override
public void keyPressed(KeyEvent e) {
gsm.keyPressed(e, e.getKeyCode());
}
@Override
public void componentResized(ComponentEvent e) {
if(e.getSource().equals(this)) {
width = getWidth();
height = getHeight();
image = createVolatileImage(width / SCALE, height / SCALE);
}
}
}