Merge branch 'main' of https://github.com/MihailRis/VoxelEngine-Cpp
This commit is contained in:
commit
2ff06f085f
@ -25,7 +25,7 @@ cmake ../
|
|||||||
cmake --build .
|
cmake --build .
|
||||||
```
|
```
|
||||||
|
|
||||||
## Instal libs:
|
## Install libs:
|
||||||
#### Debian-based distro:
|
#### Debian-based distro:
|
||||||
`$ sudo apt install libglfw3-dev libglfw3 libglew-dev libglm-dev libpng-dev libopenal-dev`
|
`$ sudo apt install libglfw3-dev libglfw3 libglew-dev libglm-dev libpng-dev libopenal-dev`
|
||||||
|
|
||||||
|
|||||||
@ -4,6 +4,12 @@
|
|||||||
#include <limits.h>
|
#include <limits.h>
|
||||||
#include "typedefs.h"
|
#include "typedefs.h"
|
||||||
|
|
||||||
|
#define ENGINE_VERSION_MAJOR 0
|
||||||
|
#define ENGINE_VERSION_MINOR 15
|
||||||
|
#define STR_(x) #x
|
||||||
|
#define STR(x) STR_(x)
|
||||||
|
#define ENGINE_VERSION STR(ENGINE_VERSION_MAJOR) "." STR(ENGINE_VERSION_MINOR)
|
||||||
|
|
||||||
#define CHUNK_W 16
|
#define CHUNK_W 16
|
||||||
#define CHUNK_H 256
|
#define CHUNK_H 256
|
||||||
#define CHUNK_D 16
|
#define CHUNK_D 16
|
||||||
|
|||||||
@ -65,10 +65,26 @@ Button::Button(shared_ptr<UINode> content, glm::vec4 padding) : Panel(vec2(32,32
|
|||||||
Button::Button(wstring text, glm::vec4 padding) : Panel(vec2(32,32), padding, 0) {
|
Button::Button(wstring text, glm::vec4 padding) : Panel(vec2(32,32), padding, 0) {
|
||||||
Label* label = new Label(text);
|
Label* label = new Label(text);
|
||||||
label->align(Align::center);
|
label->align(Align::center);
|
||||||
add(shared_ptr<UINode>(label));
|
this->label = shared_ptr<UINode>(label);
|
||||||
|
add(this->label);
|
||||||
scrollable(false);
|
scrollable(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void Button::text(std::wstring text) {
|
||||||
|
if (label) {
|
||||||
|
Label* label = (Label*)(this->label.get());
|
||||||
|
label->text(text);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
wstring Button::text() const {
|
||||||
|
if (label) {
|
||||||
|
Label* label = (Label*)(this->label.get());
|
||||||
|
return label->text();
|
||||||
|
}
|
||||||
|
return L"";
|
||||||
|
}
|
||||||
|
|
||||||
void Button::drawBackground(Batch2D* batch, Assets* assets) {
|
void Button::drawBackground(Batch2D* batch, Assets* assets) {
|
||||||
vec2 coord = calcCoord();
|
vec2 coord = calcCoord();
|
||||||
batch->texture(nullptr);
|
batch->texture(nullptr);
|
||||||
|
|||||||
@ -45,6 +45,7 @@ namespace gui {
|
|||||||
glm::vec4 hoverColor {0.05f, 0.1f, 0.15f, 0.75f};
|
glm::vec4 hoverColor {0.05f, 0.1f, 0.15f, 0.75f};
|
||||||
glm::vec4 pressedColor {0.0f, 0.0f, 0.0f, 0.95f};
|
glm::vec4 pressedColor {0.0f, 0.0f, 0.0f, 0.95f};
|
||||||
std::vector<onaction> actions;
|
std::vector<onaction> actions;
|
||||||
|
std::shared_ptr<UINode> label = nullptr;
|
||||||
public:
|
public:
|
||||||
Button(std::shared_ptr<UINode> content, glm::vec4 padding=glm::vec4(2.0f));
|
Button(std::shared_ptr<UINode> content, glm::vec4 padding=glm::vec4(2.0f));
|
||||||
Button(std::wstring text, glm::vec4 padding=glm::vec4(2.0f));
|
Button(std::wstring text, glm::vec4 padding=glm::vec4(2.0f));
|
||||||
@ -55,6 +56,9 @@ namespace gui {
|
|||||||
|
|
||||||
virtual void mouseRelease(GUI*, int x, int y) override;
|
virtual void mouseRelease(GUI*, int x, int y) override;
|
||||||
virtual Button* listenAction(onaction action);
|
virtual Button* listenAction(onaction action);
|
||||||
|
|
||||||
|
virtual void text(std::wstring text);
|
||||||
|
virtual std::wstring text() const;
|
||||||
};
|
};
|
||||||
|
|
||||||
class TextBox : public Panel {
|
class TextBox : public Panel {
|
||||||
|
|||||||
@ -182,16 +182,38 @@ void WorldRenderer::draw(const GfxContext& pctx, Camera* camera, bool occlusion)
|
|||||||
if (coord.z < 0) coord.z--;
|
if (coord.z < 0) coord.z--;
|
||||||
int cx = floordiv((int)coord.x, CHUNK_W);
|
int cx = floordiv((int)coord.x, CHUNK_W);
|
||||||
int cz = floordiv((int)coord.z, CHUNK_D);
|
int cz = floordiv((int)coord.z, CHUNK_D);
|
||||||
for (int i = 0; i < CHUNK_W; i++) {
|
/*corner*/ {
|
||||||
lineBatch->line(cx * CHUNK_W + i, 0, cz * CHUNK_D,
|
lineBatch->line( cx * CHUNK_W, 0, cz * CHUNK_D,
|
||||||
cx * CHUNK_W + i, CHUNK_H, cz * CHUNK_D, 0,0,1,0.5f);
|
cx * CHUNK_W, CHUNK_H, cz * CHUNK_D, 0.8f, 0, 0.8f, 1);
|
||||||
lineBatch->line(cx * CHUNK_W + i, 0, (cz+1) * CHUNK_D,
|
lineBatch->line( cx * CHUNK_W, 0, (cz+1) * CHUNK_D,
|
||||||
cx * CHUNK_W + i, CHUNK_H, (cz+1) * CHUNK_D, 0,0,1,0.5f);
|
cx * CHUNK_W, CHUNK_H, (cz+1) * CHUNK_D, 0.8f, 0, 0.8f, 1);
|
||||||
|
lineBatch->line((cx+1) * CHUNK_W, 0, cz * CHUNK_D,
|
||||||
|
(cx+1) * CHUNK_W, CHUNK_H, cz * CHUNK_D, 0.8f, 0, 0.8f, 1);
|
||||||
|
lineBatch->line((cx+1) * CHUNK_W, 0, (cz+1) * CHUNK_D,
|
||||||
|
(cx+1) * CHUNK_W, CHUNK_H, (cz+1) * CHUNK_D, 0.8f, 0, 0.8f, 1);
|
||||||
|
}
|
||||||
|
for (int i = 2; i < CHUNK_W; i+=2) {
|
||||||
|
lineBatch->line( cx * CHUNK_W + i, 0, cz * CHUNK_D,
|
||||||
|
cx * CHUNK_W + i, CHUNK_H, cz * CHUNK_D, 0, 0, 0.8f, 1);
|
||||||
|
lineBatch->line( cx * CHUNK_W + i, 0, (cz+1) * CHUNK_D,
|
||||||
|
cx * CHUNK_W + i, CHUNK_H, (cz+1) * CHUNK_D, 0, 0, 0.8f, 1);
|
||||||
|
}
|
||||||
|
for (int i = 2; i < CHUNK_D; i+=2) {
|
||||||
|
lineBatch->line( cx * CHUNK_W, 0, cz * CHUNK_D + i,
|
||||||
|
cx * CHUNK_W, CHUNK_H, cz * CHUNK_D + i, 0.8f, 0, 0, 1);
|
||||||
|
lineBatch->line((cx+1) * CHUNK_W, 0, cz * CHUNK_D + i,
|
||||||
|
(cx+1) * CHUNK_W, CHUNK_H, cz * CHUNK_D + i, 0.8f, 0, 0, 1);
|
||||||
|
}
|
||||||
|
for (int i=0; i < CHUNK_H; i+=2){
|
||||||
|
lineBatch->line( cx * CHUNK_W, i, cz * CHUNK_D,
|
||||||
|
cx * CHUNK_W, i, (cz+1) * CHUNK_D, 0, 0.8f, 0, 1);
|
||||||
|
lineBatch->line( cx * CHUNK_W, i, (cz+1) * CHUNK_D,
|
||||||
|
(cx+1) * CHUNK_W, i, (cz+1) * CHUNK_D, 0, 0.8f, 0, 1);
|
||||||
|
lineBatch->line((cx+1) * CHUNK_W, i, (cz+1) * CHUNK_D,
|
||||||
|
(cx+1) * CHUNK_W, i, cz * CHUNK_D, 0, 0.8f, 0, 1);
|
||||||
|
lineBatch->line((cx+1) * CHUNK_W, i, cz * CHUNK_D,
|
||||||
|
cx * CHUNK_W, i, cz * CHUNK_D, 0, 0.8f, 0, 1);
|
||||||
|
|
||||||
lineBatch->line(cx * CHUNK_W, 0, cz * CHUNK_D+i,
|
|
||||||
cx * CHUNK_W, CHUNK_H, cz * CHUNK_D+i, 1,0,0,0.5f);
|
|
||||||
lineBatch->line((cx+1) * CHUNK_W, 0, cz * CHUNK_D+i,
|
|
||||||
(cx+1) * CHUNK_W, CHUNK_H, cz * CHUNK_D+i, 1,0,0,0.5f);
|
|
||||||
}
|
}
|
||||||
lineBatch->render();
|
lineBatch->render();
|
||||||
}
|
}
|
||||||
|
|||||||
@ -3,46 +3,24 @@
|
|||||||
#include <GL/glew.h>
|
#include <GL/glew.h>
|
||||||
#include "Texture.h"
|
#include "Texture.h"
|
||||||
|
|
||||||
Framebuffer::Framebuffer(int width, int height) : width(width), height(height) {
|
Framebuffer::Framebuffer(uint width, uint height) : width(width), height(height) {
|
||||||
// glGenFramebuffers(1, &fbo);
|
glGenFramebuffers(1, &fbo);
|
||||||
// bind();
|
bind();
|
||||||
// GLuint tex;
|
GLuint tex;
|
||||||
// glGenTextures(1, &tex);
|
glGenTextures(1, &tex);
|
||||||
// // glBindTexture(GL_TEXTURE_2D, tex);
|
glBindTexture(GL_TEXTURE_2D, tex);
|
||||||
// glBindTexture(GL_TEXTURE_2D_MULTISAMPLE, tex);
|
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, width, height, 0, GL_RGB, GL_UNSIGNED_BYTE, nullptr);
|
||||||
// // glTexImage2D(GL_TEXTURE_2D, 0, GL_RGB, width, height, 0, GL_RGB, GL_UNSIGNED_BYTE, nullptr);
|
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
|
||||||
// glTexImage2DMultisample(GL_TEXTURE_2D_MULTISAMPLE, 4, GL_RGB, width, height, GL_TRUE);
|
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
|
||||||
// glTexParameteri(GL_TEXTURE_2D_MULTISAMPLE, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
|
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
|
||||||
// glTexParameteri(GL_TEXTURE_2D_MULTISAMPLE, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
|
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
|
||||||
// glTexParameteri(GL_TEXTURE_2D_MULTISAMPLE, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
|
glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, tex, 0);
|
||||||
// glTexParameteri(GL_TEXTURE_2D_MULTISAMPLE, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
|
texture = new Texture(tex, width, height);
|
||||||
// glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D_MULTISAMPLE, tex, 0);
|
glGenRenderbuffers(1, &depth);
|
||||||
// texture = new Texture(tex, width, height);
|
glBindRenderbuffer(GL_RENDERBUFFER, depth);
|
||||||
// glGenRenderbuffers(1, &depth);
|
glRenderbufferStorage(GL_RENDERBUFFER, GL_DEPTH_COMPONENT24, width, height);
|
||||||
// glBindRenderbuffer(GL_RENDERBUFFER, depth);
|
glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, GL_RENDERBUFFER, depth);
|
||||||
// glRenderbufferStorageMultisample(GL_RENDERBUFFER, 4, GL_DEPTH_COMPONENT24, width, height);
|
unbind();
|
||||||
// // glRenderbufferStorage(GL_RENDERBUFFER, GL_DEPTH_COMPONENT24, width, height);
|
|
||||||
// glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_DEPTH_ATTACHMENT, GL_RENDERBUFFER, depth);
|
|
||||||
// unbind();
|
|
||||||
|
|
||||||
|
|
||||||
// bind();
|
|
||||||
// glGenFramebuffers(1, &fbo);
|
|
||||||
// // create a multisampled color attachment texture
|
|
||||||
// unsigned int textureColorBufferMultiSampled;
|
|
||||||
// glGenTextures(1, &textureColorBufferMultiSampled);
|
|
||||||
// glBindTexture(GL_TEXTURE_2D_MULTISAMPLE, textureColorBufferMultiSampled);
|
|
||||||
// glTexImage2DMultisample(GL_TEXTURE_2D_MULTISAMPLE, 4, GL_RGB, width, height, GL_TRUE);
|
|
||||||
// glBindTexture(GL_TEXTURE_2D_MULTISAMPLE, 0);
|
|
||||||
// glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D_MULTISAMPLE, textureColorBufferMultiSampled, 0);
|
|
||||||
// // create a (also multisampled) renderbuffer object for depth and stencil attachments
|
|
||||||
// unsigned int rbo;
|
|
||||||
// glGenRenderbuffers(1, &rbo);
|
|
||||||
// glBindRenderbuffer(GL_RENDERBUFFER, rbo);
|
|
||||||
// glRenderbufferStorageMultisample(GL_RENDERBUFFER, 4, GL_DEPTH24_STENCIL8, width, height);
|
|
||||||
// glBindRenderbuffer(GL_RENDERBUFFER, 0);
|
|
||||||
// glFramebufferRenderbuffer(GL_FRAMEBUFFER, GL_DEPTH_STENCIL_ATTACHMENT, GL_RENDERBUFFER, rbo);
|
|
||||||
// unbind();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
Framebuffer::~Framebuffer() {
|
Framebuffer::~Framebuffer() {
|
||||||
@ -56,4 +34,4 @@ void Framebuffer::bind() {
|
|||||||
|
|
||||||
void Framebuffer::unbind() {
|
void Framebuffer::unbind() {
|
||||||
glBindFramebuffer(GL_FRAMEBUFFER, 0);
|
glBindFramebuffer(GL_FRAMEBUFFER, 0);
|
||||||
}
|
}
|
||||||
@ -1,16 +1,18 @@
|
|||||||
#ifndef SRC_GRAPHICS_FRAMEBUFFER_H_
|
#ifndef SRC_GRAPHICS_FRAMEBUFFER_H_
|
||||||
#define SRC_GRAPHICS_FRAMEBUFFER_H_
|
#define SRC_GRAPHICS_FRAMEBUFFER_H_
|
||||||
|
|
||||||
|
#include "../typedefs.h"
|
||||||
|
|
||||||
class Texture;
|
class Texture;
|
||||||
|
|
||||||
class Framebuffer {
|
class Framebuffer {
|
||||||
unsigned int fbo;
|
uint fbo;
|
||||||
unsigned int depth;
|
uint depth;
|
||||||
public:
|
public:
|
||||||
int width;
|
uint width;
|
||||||
int height;
|
uint height;
|
||||||
Texture* texture;
|
Texture* texture;
|
||||||
Framebuffer(int width, int height);
|
Framebuffer(uint width, uint height);
|
||||||
~Framebuffer();
|
~Framebuffer();
|
||||||
|
|
||||||
void bind();
|
void bind();
|
||||||
|
|||||||
@ -3,6 +3,7 @@
|
|||||||
|
|
||||||
#include <string>
|
#include <string>
|
||||||
|
|
||||||
|
#include "constants.h"
|
||||||
#include "typedefs.h"
|
#include "typedefs.h"
|
||||||
|
|
||||||
struct DisplaySettings {
|
struct DisplaySettings {
|
||||||
@ -17,7 +18,7 @@ struct DisplaySettings {
|
|||||||
/* GLFW swap interval value, 0 - unlimited fps, 1 - vsync*/
|
/* GLFW swap interval value, 0 - unlimited fps, 1 - vsync*/
|
||||||
int swapInterval = 1;
|
int swapInterval = 1;
|
||||||
/* Window title */
|
/* Window title */
|
||||||
const char* title = "VoxelEngine-Cpp v0.14";
|
const char* title = "VoxelEngine-Cpp v" ENGINE_VERSION;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct ChunksSettings {
|
struct ChunksSettings {
|
||||||
|
|||||||
@ -14,6 +14,8 @@ std::stack<vec4> Window::scissorStack;
|
|||||||
vec4 Window::scissorArea;
|
vec4 Window::scissorArea;
|
||||||
uint Window::width = 0;
|
uint Window::width = 0;
|
||||||
uint Window::height = 0;
|
uint Window::height = 0;
|
||||||
|
int Window::posX = 0;
|
||||||
|
int Window::posY = 0;
|
||||||
|
|
||||||
void cursor_position_callback(GLFWwindow*, double xpos, double ypos) {
|
void cursor_position_callback(GLFWwindow*, double xpos, double ypos) {
|
||||||
if (Events::_cursor_started) {
|
if (Events::_cursor_started) {
|
||||||
@ -58,11 +60,15 @@ void scroll_callback(GLFWwindow*, double xoffset, double yoffset) {
|
|||||||
Events::scroll += yoffset;
|
Events::scroll += yoffset;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool Window::isMaximized() {
|
||||||
|
return glfwGetWindowAttrib(window, GLFW_MAXIMIZED);
|
||||||
|
}
|
||||||
|
|
||||||
void window_size_callback(GLFWwindow*, int width, int height) {
|
void window_size_callback(GLFWwindow*, int width, int height) {
|
||||||
glViewport(0, 0, width, height);
|
glViewport(0, 0, width, height);
|
||||||
Window::width = width;
|
Window::width = width;
|
||||||
Window::height = height;
|
Window::height = height;
|
||||||
if (!Window::isFullscreen()) {
|
if (!Window::isFullscreen() && !Window::isMaximized()) {
|
||||||
Window::getSettings()->width = width;
|
Window::getSettings()->width = width;
|
||||||
Window::getSettings()->height = height;
|
Window::getSettings()->height = height;
|
||||||
}
|
}
|
||||||
@ -115,16 +121,11 @@ int Window::initialize(DisplaySettings& settings){
|
|||||||
glfwSetWindowSizeCallback(window, window_size_callback);
|
glfwSetWindowSizeCallback(window, window_size_callback);
|
||||||
glfwSetCharCallback(window, character_callback);
|
glfwSetCharCallback(window, character_callback);
|
||||||
glfwSetScrollCallback(window, scroll_callback);
|
glfwSetScrollCallback(window, scroll_callback);
|
||||||
|
|
||||||
GLFWmonitor* monitor = glfwGetPrimaryMonitor();
|
|
||||||
const GLFWvidmode* mode = glfwGetVideoMode(monitor);
|
|
||||||
if (settings.fullscreen) {
|
if (settings.fullscreen) {
|
||||||
|
GLFWmonitor* monitor = glfwGetPrimaryMonitor();
|
||||||
|
const GLFWvidmode* mode = glfwGetVideoMode(monitor);
|
||||||
glfwSetWindowMonitor(window, monitor, 0, 0, mode->width, mode->height, GLFW_DONT_CARE);
|
glfwSetWindowMonitor(window, monitor, 0, 0, mode->width, mode->height, GLFW_DONT_CARE);
|
||||||
}
|
}
|
||||||
else {
|
|
||||||
tryToMaximize(window, monitor);
|
|
||||||
}
|
|
||||||
|
|
||||||
glfwSwapInterval(settings.swapInterval);
|
glfwSwapInterval(settings.swapInterval);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
@ -218,11 +219,12 @@ void Window::toggleFullscreen(){
|
|||||||
if (Events::_cursor_locked) Events::toggleCursor();
|
if (Events::_cursor_locked) Events::toggleCursor();
|
||||||
|
|
||||||
if (settings->fullscreen) {
|
if (settings->fullscreen) {
|
||||||
|
glfwGetWindowPos(window, &posX, &posY);
|
||||||
glfwSetWindowMonitor(window, monitor, 0, 0, mode->width, mode->height, GLFW_DONT_CARE);
|
glfwSetWindowMonitor(window, monitor, 0, 0, mode->width, mode->height, GLFW_DONT_CARE);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
glfwSetWindowMonitor(window, nullptr, 0, 0, settings->width, settings->height, GLFW_DONT_CARE);
|
glfwSetWindowMonitor(window, nullptr, posX, posY, settings->width, settings->height, GLFW_DONT_CARE);
|
||||||
tryToMaximize(window, monitor);
|
glfwSetWindowAttrib(window, GLFW_MAXIMIZED, GLFW_FALSE);
|
||||||
}
|
}
|
||||||
|
|
||||||
double xPos, yPos;
|
double xPos, yPos;
|
||||||
@ -259,10 +261,10 @@ bool Window::tryToMaximize(GLFWwindow* window, GLFWmonitor* monitor) {
|
|||||||
glm::ivec4 workArea(0);
|
glm::ivec4 workArea(0);
|
||||||
glfwGetWindowFrameSize(window, &windowFrame.x, &windowFrame.y, &windowFrame.z, &windowFrame.w);
|
glfwGetWindowFrameSize(window, &windowFrame.x, &windowFrame.y, &windowFrame.z, &windowFrame.w);
|
||||||
glfwGetMonitorWorkarea(monitor, &workArea.x, &workArea.y, &workArea.z, &workArea.w);
|
glfwGetMonitorWorkarea(monitor, &workArea.x, &workArea.y, &workArea.z, &workArea.w);
|
||||||
if (Window::width > workArea.z) Window::width = workArea.z;
|
if (Window::width > (uint)workArea.z) Window::width = (uint)workArea.z;
|
||||||
if (Window::height > workArea.w) Window::height = workArea.w;
|
if (Window::height > (uint)workArea.w) Window::height = (uint)workArea.w;
|
||||||
if (Window::width >= workArea.z - (windowFrame.x + windowFrame.z) &&
|
if (Window::width >= (uint)(workArea.z - (windowFrame.x + windowFrame.z)) &&
|
||||||
Window::height >= workArea.w - (windowFrame.y + windowFrame.w)) {
|
Window::height >= (uint)(workArea.w - (windowFrame.y + windowFrame.w))) {
|
||||||
glfwMaximizeWindow(window);
|
glfwMaximizeWindow(window);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|||||||
@ -22,6 +22,8 @@ class Window {
|
|||||||
|
|
||||||
static bool tryToMaximize(GLFWwindow* window, GLFWmonitor* monitor);
|
static bool tryToMaximize(GLFWwindow* window, GLFWmonitor* monitor);
|
||||||
public:
|
public:
|
||||||
|
static int posX;
|
||||||
|
static int posY;
|
||||||
static uint width;
|
static uint width;
|
||||||
static uint height;
|
static uint height;
|
||||||
static int initialize(DisplaySettings& settings);
|
static int initialize(DisplaySettings& settings);
|
||||||
@ -35,6 +37,7 @@ public:
|
|||||||
static void swapInterval(int interval);
|
static void swapInterval(int interval);
|
||||||
static void toggleFullscreen();
|
static void toggleFullscreen();
|
||||||
static bool isFullscreen();
|
static bool isFullscreen();
|
||||||
|
static bool isMaximized();
|
||||||
|
|
||||||
static void pushScissor(glm::vec4 area);
|
static void pushScissor(glm::vec4 area);
|
||||||
static void popScissor();
|
static void popScissor();
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user