Improved windows resizing system...
...despite not being enabled on GLFW3
This commit is contained in:
parent
5e45c3c824
commit
ebc2b9a286
17
src/core.c
17
src/core.c
@ -1488,11 +1488,11 @@ static void InitDisplay(int width, int height)
|
||||
TraceLog(INFO, "Viewport offsets: %i, %i", renderOffsetX, renderOffsetY);
|
||||
}
|
||||
|
||||
glfwSetWindowSizeCallback(window, WindowSizeCallback);
|
||||
glfwSetWindowSizeCallback(window, WindowSizeCallback); // NOTE: Resizing not allowed by default!
|
||||
glfwSetCursorEnterCallback(window, CursorEnterCallback);
|
||||
glfwSetKeyCallback(window, KeyCallback);
|
||||
glfwSetMouseButtonCallback(window, MouseButtonCallback);
|
||||
glfwSetCursorPosCallback(window, MouseCursorPosCallback); // Track mouse position changes
|
||||
glfwSetCursorPosCallback(window, MouseCursorPosCallback); // Track mouse position changes
|
||||
glfwSetCharCallback(window, CharCallback);
|
||||
glfwSetScrollCallback(window, ScrollCallback);
|
||||
glfwSetWindowIconifyCallback(window, WindowIconifyCallback);
|
||||
@ -1818,16 +1818,19 @@ static void CursorEnterCallback(GLFWwindow *window, int enter)
|
||||
}
|
||||
|
||||
// GLFW3 WindowSize Callback, runs when window is resized
|
||||
// NOTE: Window resizing not allowed by default
|
||||
static void WindowSizeCallback(GLFWwindow *window, int width, int height)
|
||||
{
|
||||
// If window is resized, graphics device is re-initialized (but only ortho mode)
|
||||
rlglInitGraphics(renderOffsetX, renderOffsetY, renderWidth, renderHeight);
|
||||
rlglInitGraphics(0, 0, width, height);
|
||||
|
||||
// Window size must be updated to be used on 3D mode to get new aspect ratio (Begin3dMode())
|
||||
//screenWidth = width;
|
||||
//screenHeight = height;
|
||||
|
||||
// TODO: Update render size?
|
||||
screenWidth = width;
|
||||
screenHeight = height;
|
||||
renderWidth = width;
|
||||
renderHeight = height;
|
||||
|
||||
// NOTE: Postprocessing texture is not scaled to new size
|
||||
|
||||
// Background must be also re-cleared
|
||||
ClearBackground(RAYWHITE);
|
||||
|
15
src/rlgl.c
15
src/rlgl.c
@ -188,6 +188,8 @@ typedef struct {
|
||||
// Framebuffer Object type
|
||||
typedef struct {
|
||||
GLuint id;
|
||||
int width;
|
||||
int height;
|
||||
GLuint colorTextureId;
|
||||
GLuint depthTextureId;
|
||||
} FBO;
|
||||
@ -1071,8 +1073,8 @@ void rlglInitPostpro(void)
|
||||
|
||||
quad.vertexCount = 6;
|
||||
|
||||
float w = (float)screenWidth;
|
||||
float h = (float)screenHeight;
|
||||
float w = (float)postproFbo.width;
|
||||
float h = (float)postproFbo.height;
|
||||
|
||||
float quadPositions[6*3] = { w, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, h, 0.0f, 0.0f, h, 0.0f, w, h, 0.0f, w, 0.0f, 0.0f };
|
||||
float quadTexcoords[6*2] = { 1.0f, 1.0f, 0.0f, 1.0f, 0.0f, 0.0f, 0.0f, 0.0f, 1.0f, 0.0f, 1.0f, 1.0f };
|
||||
@ -1096,6 +1098,8 @@ FBO rlglLoadFBO(int width, int height)
|
||||
{
|
||||
FBO fbo;
|
||||
fbo.id = 0;
|
||||
fbo.width = width;
|
||||
fbo.height = height;
|
||||
|
||||
#if defined(GRAPHICS_API_OPENGL_33) || defined(GRAPHICS_API_OPENGL_ES2)
|
||||
// Create the texture that will serve as the color attachment for the framebuffer
|
||||
@ -2339,22 +2343,21 @@ void SetCustomShader(Shader shader)
|
||||
}
|
||||
|
||||
// Set postprocessing shader
|
||||
// NOTE: Uses global variables screenWidth and screenHeight
|
||||
void SetPostproShader(Shader shader)
|
||||
{
|
||||
#if defined(GRAPHICS_API_OPENGL_33) || defined(GRAPHICS_API_OPENGL_ES2)
|
||||
if (!enabledPostpro)
|
||||
{
|
||||
enabledPostpro = true;
|
||||
rlglInitPostpro();
|
||||
rlglInitPostpro(); // Lazy initialization on postprocessing usage
|
||||
}
|
||||
|
||||
SetModelShader(&postproQuad, shader);
|
||||
|
||||
Texture2D texture;
|
||||
texture.id = postproFbo.colorTextureId;
|
||||
texture.width = screenWidth;
|
||||
texture.height = screenHeight;
|
||||
texture.width = postproFbo.width;
|
||||
texture.height = postproFbo.height;
|
||||
|
||||
postproQuad.material.texDiffuse = texture;
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user