diff options
| author | Ray <raysan5@gmail.com> | 2016-05-02 00:37:33 +0200 |
|---|---|---|
| committer | Ray <raysan5@gmail.com> | 2016-05-02 00:37:33 +0200 |
| commit | fa98289ddb5fc190a100249c667d5e9814f4d864 (patch) | |
| tree | 549612266fa83383464e544b2607d2d5dbce1f06 /src | |
| parent | 0e6d1cb272435c670a991169f413c98516dce15d (diff) | |
| download | raylib-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.c | 44 | ||||
| -rw-r--r-- | src/raylib.h | 3 |
2 files changed, 29 insertions, 18 deletions
@@ -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 |
