aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorraysan5 <raysan5@gmail.com>2016-03-20 14:20:42 +0100
committerraysan5 <raysan5@gmail.com>2016-03-20 14:20:42 +0100
commitebc2b9a286b07f551689f13fc82367c93e7c3ade (patch)
tree18c5aab68feed78dba2710da09eda833f8349f22 /src
parent5e45c3c824b61abd94525c1dcd08abc5a10dc613 (diff)
downloadraylib-ebc2b9a286b07f551689f13fc82367c93e7c3ade.tar.gz
raylib-ebc2b9a286b07f551689f13fc82367c93e7c3ade.zip
Improved windows resizing system...
...despite not being enabled on GLFW3
Diffstat (limited to 'src')
-rw-r--r--src/core.c17
-rw-r--r--src/rlgl.c15
2 files changed, 19 insertions, 13 deletions
diff --git a/src/core.c b/src/core.c
index d27a031b..c8d78133 100644
--- a/src/core.c
+++ b/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);
diff --git a/src/rlgl.c b/src/rlgl.c
index b6a179d6..fc14a0af 100644
--- a/src/rlgl.c
+++ b/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;