REDESIGNED: Set rlgl internal framebuffer #2420
This commit is contained in:
parent
dc553d1996
commit
74ca81338e
2 changed files with 25 additions and 13 deletions
|
@ -2201,8 +2201,10 @@ void BeginTextureMode(RenderTexture2D target)
|
||||||
|
|
||||||
rlEnableFramebuffer(target.id); // Enable render target
|
rlEnableFramebuffer(target.id); // Enable render target
|
||||||
|
|
||||||
// Set viewport to framebuffer size
|
// Set viewport and RLGL internal framebuffer size
|
||||||
rlViewport(0, 0, target.texture.width, target.texture.height);
|
rlViewport(0, 0, target.texture.width, target.texture.height);
|
||||||
|
rlSetFramebufferWidth(target.texture.width);
|
||||||
|
rlSetFramebufferHeight(target.texture.height);
|
||||||
|
|
||||||
rlMatrixMode(RL_PROJECTION); // Switch to projection matrix
|
rlMatrixMode(RL_PROJECTION); // Switch to projection matrix
|
||||||
rlLoadIdentity(); // Reset current matrix (projection)
|
rlLoadIdentity(); // Reset current matrix (projection)
|
||||||
|
|
34
src/rlgl.h
34
src/rlgl.h
|
@ -598,7 +598,9 @@ RLAPI void rlglInit(int width, int height); // Initialize rlgl (buffer
|
||||||
RLAPI void rlglClose(void); // De-inititialize rlgl (buffers, shaders, textures)
|
RLAPI void rlglClose(void); // De-inititialize rlgl (buffers, shaders, textures)
|
||||||
RLAPI void rlLoadExtensions(void *loader); // Load OpenGL extensions (loader function required)
|
RLAPI void rlLoadExtensions(void *loader); // Load OpenGL extensions (loader function required)
|
||||||
RLAPI int rlGetVersion(void); // Get current OpenGL version
|
RLAPI int rlGetVersion(void); // Get current OpenGL version
|
||||||
|
RLAPI int rlSetFramebufferWidth(int width); // Set current framebuffer width
|
||||||
RLAPI int rlGetFramebufferWidth(void); // Get default framebuffer width
|
RLAPI int rlGetFramebufferWidth(void); // Get default framebuffer width
|
||||||
|
RLAPI int rlSetFramebufferHeight(int height); // Set current framebuffer height
|
||||||
RLAPI int rlGetFramebufferHeight(void); // Get default framebuffer height
|
RLAPI int rlGetFramebufferHeight(void); // Get default framebuffer height
|
||||||
|
|
||||||
RLAPI unsigned int rlGetTextureIdDefault(void); // Get default texture id
|
RLAPI unsigned int rlGetTextureIdDefault(void); // Get default texture id
|
||||||
|
@ -927,10 +929,8 @@ typedef struct rlglData {
|
||||||
int glBlendDstFactor; // Blending destination factor
|
int glBlendDstFactor; // Blending destination factor
|
||||||
int glBlendEquation; // Blending equation
|
int glBlendEquation; // Blending equation
|
||||||
|
|
||||||
int viewportX; // Current viewport offset x
|
int framebufferWidth; // Current framebuffer width
|
||||||
int viewportY; // Current viewport offset y
|
int framebufferHeight; // Current framebuffer height
|
||||||
int framebufferWidth; // Current viewport width (framebuffer)
|
|
||||||
int framebufferHeight; // Current viewport height (framebuffer)
|
|
||||||
|
|
||||||
} State; // Renderer state
|
} State; // Renderer state
|
||||||
struct {
|
struct {
|
||||||
|
@ -1235,11 +1235,6 @@ void rlOrtho(double left, double right, double bottom, double top, double znear,
|
||||||
// NOTE: We store current viewport dimensions
|
// NOTE: We store current viewport dimensions
|
||||||
void rlViewport(int x, int y, int width, int height)
|
void rlViewport(int x, int y, int width, int height)
|
||||||
{
|
{
|
||||||
RLGL.State.viewportX = x;
|
|
||||||
RLGL.State.viewportY = y;
|
|
||||||
RLGL.State.framebufferWidth = width;
|
|
||||||
RLGL.State.framebufferHeight = height;
|
|
||||||
|
|
||||||
glViewport(x, y, width, height);
|
glViewport(x, y, width, height);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -2227,6 +2222,22 @@ int rlGetVersion(void)
|
||||||
return glVersion;
|
return glVersion;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Set current framebuffer width
|
||||||
|
int rlSetFramebufferWidth(int width)
|
||||||
|
{
|
||||||
|
#if defined(GRAPHICS_API_OPENGL_33) || defined(GRAPHICS_API_OPENGL_ES2)
|
||||||
|
RLGL.State.framebufferWidth = width;
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
// Set current framebuffer height
|
||||||
|
int rlSetFramebufferHeight(int height)
|
||||||
|
{
|
||||||
|
#if defined(GRAPHICS_API_OPENGL_33) || defined(GRAPHICS_API_OPENGL_ES2)
|
||||||
|
RLGL.State.framebufferHeight = height;
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
// Get default framebuffer width
|
// Get default framebuffer width
|
||||||
int rlGetFramebufferWidth(void)
|
int rlGetFramebufferWidth(void)
|
||||||
{
|
{
|
||||||
|
@ -2510,8 +2521,7 @@ void rlDrawRenderBatch(rlRenderBatch *batch)
|
||||||
if (eyeCount == 2)
|
if (eyeCount == 2)
|
||||||
{
|
{
|
||||||
// Setup current eye viewport (half screen width)
|
// Setup current eye viewport (half screen width)
|
||||||
// NOTE: We use glViewport() because rlViewport() stores viewport measures in RLGL.State
|
rlViewport(eye*RLGL.State.framebufferWidth/2, 0, RLGL.State.framebufferWidth/2, RLGL.State.framebufferHeight);
|
||||||
glViewport(RLGL.State.viewportX + eye*RLGL.State.framebufferWidth/2, RLGL.State.viewportY, RLGL.State.framebufferWidth/2, RLGL.State.framebufferHeight);
|
|
||||||
|
|
||||||
// Set current eye view offset to modelview matrix
|
// Set current eye view offset to modelview matrix
|
||||||
rlSetMatrixModelview(rlMatrixMultiply(matModelView, RLGL.State.viewOffsetStereo[eye]));
|
rlSetMatrixModelview(rlMatrixMultiply(matModelView, RLGL.State.viewOffsetStereo[eye]));
|
||||||
|
@ -2612,7 +2622,7 @@ void rlDrawRenderBatch(rlRenderBatch *batch)
|
||||||
}
|
}
|
||||||
|
|
||||||
// Restore viewport to default measures
|
// Restore viewport to default measures
|
||||||
if (eyeCount == 2) glViewport(RLGL.State.viewportX, RLGL.State.viewportY, RLGL.State.framebufferWidth, RLGL.State.framebufferHeight);
|
if (eyeCount == 2) rlViewport(0, 0, RLGL.State.framebufferWidth, RLGL.State.framebufferHeight);
|
||||||
//------------------------------------------------------------------------------------------------------------
|
//------------------------------------------------------------------------------------------------------------
|
||||||
|
|
||||||
// Reset batch buffers
|
// Reset batch buffers
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue