소스 검색

[rshapes] Review `DrawRectangleLines()` pixel offset (#4261)

* [rshapes] Remove `DrawRectangleLines()`'s + 1 offset

* ... and replace it with a -/+ 0.5 offset divided by current cam's zoom.
RadsammyT 10 달 전
부모
커밋
385187f795
1개의 변경된 파일10개의 추가작업 그리고 8개의 파일을 삭제
  1. 10 8
      src/rshapes.c

+ 10 - 8
src/rshapes.c

@@ -807,19 +807,21 @@ void DrawRectangleGradientEx(Rectangle rec, Color topLeft, Color bottomLeft, Col
 // but it solves another issue: https://github.com/raysan5/raylib/issues/3884
 void DrawRectangleLines(int posX, int posY, int width, int height, Color color)
 {
+    Matrix mat = rlGetMatrixModelview();
+    float zoomElement = 0.5f / mat.m0;
     rlBegin(RL_LINES);
         rlColor4ub(color.r, color.g, color.b, color.a);
-        rlVertex2f((float)posX, (float)posY);
-        rlVertex2f((float)posX + (float)width, (float)posY + 1);
+        rlVertex2f((float)posX - zoomElement, (float)posY);
+        rlVertex2f((float)posX + (float)width + zoomElement, (float)posY);
 
-        rlVertex2f((float)posX + (float)width, (float)posY + 1);
-        rlVertex2f((float)posX + (float)width, (float)posY + (float)height);
+        rlVertex2f((float)posX + (float)width, (float)posY - zoomElement);
+        rlVertex2f((float)posX + (float)width, (float)posY + (float)height + zoomElement);
 
-        rlVertex2f((float)posX + (float)width, (float)posY + (float)height);
-        rlVertex2f((float)posX + 1, (float)posY + (float)height);
+        rlVertex2f((float)posX + (float)width + zoomElement, (float)posY + (float)height);
+        rlVertex2f((float)posX - zoomElement, (float)posY + (float)height);
 
-        rlVertex2f((float)posX + 1, (float)posY + (float)height);
-        rlVertex2f((float)posX + 1, (float)posY + 1);
+        rlVertex2f((float)posX, (float)posY + (float)height + zoomElement);
+        rlVertex2f((float)posX, (float)posY - zoomElement);
     rlEnd();
 }