aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorraysan5 <raysan5@gmail.com>2019-08-26 21:09:03 +0200
committerraysan5 <raysan5@gmail.com>2019-08-26 21:09:03 +0200
commitaddbd88833ffc9a2bd1fe33a83e683245324abd0 (patch)
tree4be7816f3c90d315bbc9b1797c1a792e313a55d4 /src
parent8e86f3586d40992d2cd38416d3b67413f42356c1 (diff)
downloadraylib-addbd88833ffc9a2bd1fe33a83e683245324abd0.tar.gz
raylib-addbd88833ffc9a2bd1fe33a83e683245324abd0.zip
Expose scissor functionality
Diffstat (limited to 'src')
-rw-r--r--src/core.c17
-rw-r--r--src/raylib.h4
-rw-r--r--src/rlgl.h51
3 files changed, 35 insertions, 37 deletions
diff --git a/src/core.c b/src/core.c
index 4352a321..bc633e8b 100644
--- a/src/core.c
+++ b/src/core.c
@@ -1392,6 +1392,23 @@ void EndTextureMode(void)
currentHeight = GetScreenHeight();
}
+// Begin scissor mode (define screen area for following drawing)
+// NOTE: Scissor rec refers to bottom-left corner, we change it to upper-left
+void BeginScissorMode(int x, int y, int width, int height)
+{
+ rlglDraw(); // Force drawing elements
+
+ rlEnableScissorTest();
+ rlScissor(x, GetScreenHeight() - (y + height), width, height);
+}
+
+// End scissor mode
+void EndScissorMode(void)
+{
+ rlglDraw(); // Force drawing elements
+ rlDisableScissorTest();
+}
+
// Returns a ray trace from mouse position
Ray GetMouseRay(Vector2 mousePosition, Camera camera)
{
diff --git a/src/raylib.h b/src/raylib.h
index 0594b370..56b1f95e 100644
--- a/src/raylib.h
+++ b/src/raylib.h
@@ -904,6 +904,8 @@ RLAPI void BeginMode3D(Camera3D camera); // Initializes
RLAPI void EndMode3D(void); // Ends 3D mode and returns to default 2D orthographic mode
RLAPI void BeginTextureMode(RenderTexture2D target); // Initializes render texture for drawing
RLAPI void EndTextureMode(void); // Ends drawing to render texture
+RLAPI void BeginScissorMode(int x, int y, int width, int height); // Begin scissor mode (define screen area for following drawing)
+RLAPI void EndScissorMode(void); // End scissor mode
// Screen-space-related functions
RLAPI Ray GetMouseRay(Vector2 mousePosition, Camera camera); // Returns a ray trace from mouse position
@@ -1324,8 +1326,6 @@ RLAPI void BeginShaderMode(Shader shader); // Beg
RLAPI void EndShaderMode(void); // End custom shader drawing (use default shader)
RLAPI void BeginBlendMode(int mode); // Begin blending mode (alpha, additive, multiplied)
RLAPI void EndBlendMode(void); // End blending mode (reset to default: alpha blending)
-RLAPI void BeginScissorMode(int x, int y, int width, int height); // Begin scissor mode (define screen area for following drawing)
-RLAPI void EndScissorMode(void); // End scissor mode
// VR control functions
RLAPI void InitVrSimulator(void); // Init VR simulator for selected device parameters
diff --git a/src/rlgl.h b/src/rlgl.h
index 9771d30f..c71033cb 100644
--- a/src/rlgl.h
+++ b/src/rlgl.h
@@ -457,6 +457,9 @@ RLAPI void rlEnableDepthTest(void); // Enable depth te
RLAPI void rlDisableDepthTest(void); // Disable depth test
RLAPI void rlEnableBackfaceCulling(void); // Enable backface culling
RLAPI void rlDisableBackfaceCulling(void); // Disable backface culling
+RLAPI void rlEnableScissorTest(void); // Enable scissor test
+RLAPI void rlDisableScissorTest(void); // Disable scissor test
+RLAPI void rlScissor(int x, int y, int width, int height); // Scissor test
RLAPI void rlEnableWireMode(void); // Enable wire mode
RLAPI void rlDisableWireMode(void); // Disable wire mode
RLAPI void rlDeleteTextures(unsigned int id); // Delete OpenGL texture from GPU
@@ -1344,28 +1347,25 @@ void rlDisableRenderTexture(void)
}
// Enable depth test
-void rlEnableDepthTest(void)
-{
- glEnable(GL_DEPTH_TEST);
-}
+void rlEnableDepthTest(void) { glEnable(GL_DEPTH_TEST); }
// Disable depth test
-void rlDisableDepthTest(void)
-{
- glDisable(GL_DEPTH_TEST);
-}
+void rlDisableDepthTest(void) { glDisable(GL_DEPTH_TEST); }
// Enable backface culling
-void rlEnableBackfaceCulling(void)
-{
- glEnable(GL_CULL_FACE);
-}
+void rlEnableBackfaceCulling(void) { glEnable(GL_CULL_FACE); }
// Disable backface culling
-void rlDisableBackfaceCulling(void)
-{
- glDisable(GL_CULL_FACE);
-}
+void rlDisableBackfaceCulling(void) { glDisable(GL_CULL_FACE); }
+
+// Enable scissor test
+RLAPI void rlEnableScissorTest(void) { glEnable(GL_SCISSOR_TEST); }
+
+// Disable scissor test
+RLAPI void rlDisableScissorTest(void) { glDisable(GL_SCISSOR_TEST); }
+
+// Scissor test
+RLAPI void rlScissor(int x, int y, int width, int height) { glScissor(x, y, width, height); }
// Enable wire mode
void rlEnableWireMode(void)
@@ -1698,7 +1698,6 @@ void rlglInit(int width, int height)
// Initialize OpenGL default states
//----------------------------------------------------------
-
// Init state: Depth test
glDepthFunc(GL_LEQUAL); // Type of depth testing to apply
glDisable(GL_DEPTH_TEST); // Disable depth testing for 2D (only used for 3D)
@@ -3524,24 +3523,6 @@ void EndBlendMode(void)
BeginBlendMode(BLEND_ALPHA);
}
-// Begin scissor mode (define screen area for following drawing)
-// NOTE: Scissor rec refers to bottom-left corner, we change it to upper-left
-void BeginScissorMode(int x, int y, int width, int height)
-{
- rlglDraw(); // Force drawing elements
-
- glEnable(GL_SCISSOR_TEST);
- glScissor(x, framebufferHeight - (y + height), width, height);
-}
-
-// End scissor mode
-void EndScissorMode(void)
-{
- rlglDraw(); // Force drawing elements
-
- glDisable(GL_SCISSOR_TEST);
-}
-
#if defined(SUPPORT_VR_SIMULATOR)
// Init VR simulator for selected device parameters
// NOTE: It modifies the global variable: stereoFbo