Example for including OpenGL in a java swing project
This commit is contained in:
@@ -0,0 +1,95 @@
|
|||||||
|
package EngineTest;
|
||||||
|
|
||||||
|
import Entity.Camera;
|
||||||
|
import Entity.Entity;
|
||||||
|
import Models.RawModel;
|
||||||
|
import Models.TexturedModel;
|
||||||
|
import RenderEngine.DisplayManager;
|
||||||
|
import RenderEngine.Loader;
|
||||||
|
import RenderEngine.Renderer;
|
||||||
|
import Shaders.StaticShader;
|
||||||
|
import Textures.ModelTexture;
|
||||||
|
import Tools.Axis;
|
||||||
|
import Tools.OBJLoader;
|
||||||
|
import Tools.Space;
|
||||||
|
import org.lwjgl.input.Keyboard;
|
||||||
|
import org.lwjgl.input.Mouse;
|
||||||
|
import org.lwjgl.opengl.Display;
|
||||||
|
import org.lwjgl.util.vector.Vector3f;
|
||||||
|
|
||||||
|
import javax.swing.*;
|
||||||
|
import java.awt.*;
|
||||||
|
import java.awt.event.ActionEvent;
|
||||||
|
import java.awt.event.ActionListener;
|
||||||
|
|
||||||
|
public class SwingTest
|
||||||
|
{
|
||||||
|
public static void main(String[] args)
|
||||||
|
{
|
||||||
|
new SwingTest();
|
||||||
|
}
|
||||||
|
|
||||||
|
private Canvas canvas;
|
||||||
|
private JFrame frame;
|
||||||
|
private JPanel leftPanel;
|
||||||
|
private JPanel centerPanel;
|
||||||
|
|
||||||
|
public SwingTest()
|
||||||
|
{
|
||||||
|
frame = new JFrame();
|
||||||
|
frame.setSize(1600, 900);
|
||||||
|
frame.setLocationRelativeTo(null);
|
||||||
|
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
|
||||||
|
frame.setLayout(new BorderLayout());
|
||||||
|
|
||||||
|
canvas = new Canvas();
|
||||||
|
|
||||||
|
canvas.setIgnoreRepaint(true);
|
||||||
|
canvas.setPreferredSize(new Dimension(800, 600));
|
||||||
|
canvas.setMinimumSize(new Dimension(320, 240));
|
||||||
|
canvas.setVisible(true);
|
||||||
|
|
||||||
|
leftPanel = new JPanel();
|
||||||
|
centerPanel = new JPanel();
|
||||||
|
|
||||||
|
centerPanel.add(canvas);
|
||||||
|
|
||||||
|
frame.add(leftPanel, BorderLayout.WEST);
|
||||||
|
frame.add(centerPanel, BorderLayout.CENTER);
|
||||||
|
frame.setVisible(true);
|
||||||
|
|
||||||
|
new Thread(new Runnable()
|
||||||
|
{
|
||||||
|
@Override
|
||||||
|
public void run()
|
||||||
|
{
|
||||||
|
includeGL();
|
||||||
|
}
|
||||||
|
}).start();
|
||||||
|
}
|
||||||
|
|
||||||
|
private void includeGL(){
|
||||||
|
DisplayManager.createDisplay("Redr", false);
|
||||||
|
DisplayManager.setDisplayParent(canvas);
|
||||||
|
|
||||||
|
Loader loader = new Loader();
|
||||||
|
StaticShader shader = new StaticShader();
|
||||||
|
Renderer renderer = new RenderEngine.Renderer(shader);
|
||||||
|
|
||||||
|
Camera camera = new Camera();
|
||||||
|
|
||||||
|
while(!Display.isCloseRequested())
|
||||||
|
{
|
||||||
|
renderer.prepare(0.2f, 0.2f, 0.2f);
|
||||||
|
shader.start();
|
||||||
|
shader.loadViewMatrix(camera);
|
||||||
|
// renderer.render(entity, shader);
|
||||||
|
shader.stop();
|
||||||
|
DisplayManager.updateDisplay();
|
||||||
|
}
|
||||||
|
|
||||||
|
shader.clear();
|
||||||
|
loader.clear();
|
||||||
|
DisplayManager.closeDisplay();
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -2,6 +2,9 @@ package RenderEngine;
|
|||||||
|
|
||||||
import org.lwjgl.LWJGLException;
|
import org.lwjgl.LWJGLException;
|
||||||
import org.lwjgl.opengl.*;
|
import org.lwjgl.opengl.*;
|
||||||
|
import org.lwjgl.opengl.DisplayMode;
|
||||||
|
|
||||||
|
import java.awt.*;
|
||||||
|
|
||||||
public class DisplayManager
|
public class DisplayManager
|
||||||
{
|
{
|
||||||
@@ -75,4 +78,15 @@ public class DisplayManager
|
|||||||
{
|
{
|
||||||
return Display.isFullscreen();
|
return Display.isFullscreen();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static void setDisplayParent(Canvas parent)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
Display.setParent(parent);
|
||||||
|
} catch (LWJGLException e)
|
||||||
|
{
|
||||||
|
throw new RuntimeException(e);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user