First commit
This commit is contained in:
commit
58c64ab472
62 changed files with 29291 additions and 0 deletions
143
src/mrdev023/opengl/Display.java
Normal file
143
src/mrdev023/opengl/Display.java
Normal file
|
@ -0,0 +1,143 @@
|
|||
package mrdev023.opengl;
|
||||
|
||||
import static org.lwjgl.glfw.GLFW.*;
|
||||
import static org.lwjgl.opengl.GL11.*;
|
||||
import static org.lwjgl.system.MemoryUtil.*;
|
||||
|
||||
import java.awt.*;
|
||||
import java.nio.*;
|
||||
|
||||
import org.lwjgl.*;
|
||||
import org.lwjgl.opengl.*;
|
||||
|
||||
import mrdev023.exception.*;
|
||||
|
||||
public class Display {
|
||||
|
||||
private static DisplayMode displayMode;
|
||||
private static String TITLE = "";
|
||||
private static long window;
|
||||
private static boolean hasResized = false;
|
||||
|
||||
public static void create(String title,int width,int height){
|
||||
if ( glfwInit() != GL11.GL_TRUE )
|
||||
throw new IllegalStateException("Unable to initialize GLFW");
|
||||
|
||||
TITLE = title;
|
||||
displayMode = new DisplayMode(width,height);
|
||||
window = glfwCreateWindow(displayMode.getWidth(),displayMode.getHeight(), TITLE, NULL, NULL);
|
||||
|
||||
}
|
||||
|
||||
public static void create(String title,int width,int height,int major,int minor){
|
||||
if ( glfwInit() != GL11.GL_TRUE )
|
||||
throw new IllegalStateException("Unable to initialize GLFW");
|
||||
|
||||
glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, major); // Nous voulons OpenGL 3.3
|
||||
glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, minor);
|
||||
glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE);
|
||||
|
||||
TITLE = title;
|
||||
displayMode = new DisplayMode(width,height);
|
||||
window = glfwCreateWindow(displayMode.getWidth(),displayMode.getHeight(), TITLE, NULL, NULL);
|
||||
}
|
||||
|
||||
public static void setMouseGrabbed(boolean a){
|
||||
if(a){
|
||||
glfwSetInputMode(window, GLFW_CURSOR, GLFW_CURSOR_DISABLED);
|
||||
}else{
|
||||
glfwSetInputMode(window, GLFW_CURSOR, GLFW_CURSOR_NORMAL);
|
||||
}
|
||||
}
|
||||
|
||||
public static void setVSync(boolean a) throws DisplayException{
|
||||
if(a)glfwSwapInterval(1);
|
||||
else glfwSwapInterval(0);
|
||||
}
|
||||
|
||||
public static void create(String title,int width,int height,int major,int minor,int sample){
|
||||
if ( glfwInit() != GL11.GL_TRUE )
|
||||
throw new IllegalStateException("Unable to initialize GLFW");
|
||||
|
||||
glfwWindowHint(GLFW_SAMPLES, sample); // antialiasing 4x
|
||||
glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, major); // Nous voulons OpenGL 3.3
|
||||
glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, minor);
|
||||
glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE);
|
||||
|
||||
TITLE = title;
|
||||
displayMode = new DisplayMode(width,height);
|
||||
window = glfwCreateWindow(displayMode.getWidth(),displayMode.getHeight(), TITLE, NULL, NULL);
|
||||
}
|
||||
|
||||
public static void setSample(int sample){
|
||||
glfwWindowHint(GLFW_SAMPLES, sample);
|
||||
}
|
||||
|
||||
public static void setResizable(boolean a){
|
||||
if(a)glfwWindowHint(GLFW_RESIZABLE, GL_TRUE);
|
||||
else glfwWindowHint(GLFW_RESIZABLE, GL_FALSE);
|
||||
}
|
||||
|
||||
public static void setTitle(String title){
|
||||
TITLE = title;
|
||||
glfwSetWindowTitle(window, TITLE);
|
||||
}
|
||||
|
||||
public static String getTitle(){
|
||||
return TITLE;
|
||||
}
|
||||
|
||||
public static boolean wasResized(){
|
||||
ByteBuffer w = BufferUtils.createByteBuffer(4);
|
||||
ByteBuffer h = BufferUtils.createByteBuffer(4);
|
||||
glfwGetWindowSize(window, w, h);
|
||||
int width = w.getInt(0);
|
||||
int height = h.getInt(0);
|
||||
|
||||
if(Display.getDisplayMode().getWidth() != width || Display.getDisplayMode().getHeight() != height || hasResized){
|
||||
setDisplayMode(new DisplayMode(width, height));
|
||||
hasResized = false;
|
||||
return true;
|
||||
}else{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
public static boolean isCloseRequested(){
|
||||
return glfwWindowShouldClose(window) == GL_TRUE;
|
||||
}
|
||||
|
||||
public static void createContext(){
|
||||
glfwMakeContextCurrent(window);
|
||||
GL.createCapabilities();
|
||||
}
|
||||
|
||||
public static void updateEvent(){
|
||||
glfwPollEvents();
|
||||
}
|
||||
|
||||
public static void updateFrame(){
|
||||
glfwSwapBuffers(window);
|
||||
}
|
||||
|
||||
public static DisplayMode getDisplayMode() {
|
||||
return displayMode;
|
||||
}
|
||||
|
||||
public static void setDisplayMode(DisplayMode displayMode) {
|
||||
if(Display.displayMode == null || displayMode == null)return;
|
||||
Display.displayMode.setDisplayMode(displayMode);
|
||||
hasResized = true;
|
||||
}
|
||||
|
||||
public static void destroy(){
|
||||
glfwDestroyWindow(window);
|
||||
glfwTerminate();
|
||||
}
|
||||
|
||||
public static long getWindow() {
|
||||
return window;
|
||||
}
|
||||
|
||||
|
||||
}
|
Reference in a new issue