aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorRay <raysan5@gmail.com>2016-05-02 00:37:33 +0200
committerRay <raysan5@gmail.com>2016-05-02 00:37:33 +0200
commitfa98289ddb5fc190a100249c667d5e9814f4d864 (patch)
tree549612266fa83383464e544b2607d2d5dbce1f06 /src
parent0e6d1cb272435c670a991169f413c98516dce15d (diff)
downloadraylib-fa98289ddb5fc190a100249c667d5e9814f4d864.tar.gz
raylib-fa98289ddb5fc190a100249c667d5e9814f4d864.zip
Added 2D camera mode functions
Removed BeginDrawingEx() Added Begin2dMode() and End2dMode()
Diffstat (limited to 'src')
-rw-r--r--src/core.c44
-rw-r--r--src/raylib.h3
2 files changed, 29 insertions, 18 deletions
diff --git a/src/core.c b/src/core.c
index 7b1d5960..dd904692 100644
--- a/src/core.c
+++ b/src/core.c
@@ -524,23 +524,6 @@ void BeginDrawing(void)
// NOTE: Not required with OpenGL 3.3+
}
-// Setup drawing canvas with 2d camera
-void BeginDrawingEx(Camera2D camera)
-{
- BeginDrawing();
-
- // Camera rotation and scaling is always relative to target
- Matrix matOrigin = MatrixTranslate(-camera.target.x, -camera.target.y, 0.0f);
- Matrix matRotation = MatrixRotate((Vector3){ 0.0f, 0.0f, 1.0f }, camera.rotation*DEG2RAD);
- Matrix matScale = MatrixScale(camera.zoom, camera.zoom, 1.0f);
-
- Matrix matTranslation = MatrixTranslate(camera.offset.x + camera.target.x, camera.offset.y + camera.target.y, 0.0f);
-
- Matrix matTransform = MatrixMultiply(MatrixMultiply(matOrigin, MatrixMultiply(matScale, matRotation)), matTranslation);
-
- rlMultMatrixf(MatrixToFloat(matTransform));
-}
-
// End canvas drawing and Swap Buffers (Double Buffering)
void EndDrawing(void)
{
@@ -569,6 +552,33 @@ void EndDrawing(void)
}
}
+// Initialize 2D mode with custom camera
+void Begin2dMode(Camera2D camera)
+{
+ rlglDraw(); // Draw Buffers (Only OpenGL 3+ and ES2)
+
+ rlLoadIdentity(); // Reset current matrix (MODELVIEW)
+
+ // Camera rotation and scaling is always relative to target
+ Matrix matOrigin = MatrixTranslate(-camera.target.x, -camera.target.y, 0.0f);
+ Matrix matRotation = MatrixRotate((Vector3){ 0.0f, 0.0f, 1.0f }, camera.rotation*DEG2RAD);
+ Matrix matScale = MatrixScale(camera.zoom, camera.zoom, 1.0f);
+
+ Matrix matTranslation = MatrixTranslate(camera.offset.x + camera.target.x, camera.offset.y + camera.target.y, 0.0f);
+
+ Matrix matTransform = MatrixMultiply(MatrixMultiply(matOrigin, MatrixMultiply(matScale, matRotation)), matTranslation);
+
+ rlMultMatrixf(MatrixToFloat(matTransform));
+}
+
+// Ends 2D mode custom camera usage
+void End2dMode(void)
+{
+ rlglDraw(); // Draw Buffers (Only OpenGL 3+ and ES2)
+
+ rlLoadIdentity(); // Reset current matrix (MODELVIEW)
+}
+
// Initializes 3D mode for drawing (Camera setup)
void Begin3dMode(Camera camera)
{
diff --git a/src/raylib.h b/src/raylib.h
index 8af13cb4..337b9813 100644
--- a/src/raylib.h
+++ b/src/raylib.h
@@ -576,9 +576,10 @@ void DisableCursor(void); // Disables cursor
void ClearBackground(Color color); // Sets Background Color
void BeginDrawing(void); // Setup drawing canvas to start drawing
-void BeginDrawingEx(Camera2D camera); // Setup drawing canvas with 2d camera
void EndDrawing(void); // End canvas drawing and Swap Buffers (Double Buffering)
+void Begin2dMode(Camera2D camera); // Initialize 2D mode with custom camera
+void End2dMode(void); // Ends 2D mode custom camera usage
void Begin3dMode(Camera camera); // Initializes 3D mode for drawing (Camera setup)
void End3dMode(void); // Ends 3D mode and returns to default 2D orthographic mode
void BeginTextureMode(RenderTexture2D target); // Initializes render texture for drawing