Example for including OpenGL in a java swing project

This commit is contained in:
brausjonas
2022-10-26 12:08:36 +02:00
parent d565e8188f
commit 88f835d389
2 changed files with 109 additions and 0 deletions
+95
View File
@@ -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);
}
}
} }