InitPlatform() centers the window with monitorX + (monitorWidth - width)/2,
with no check for the window being bigger than the monitor. If it is
(landscape window on a portrait primary monitor, or any window wider/taller
than the workarea), that division goes negative and the window gets placed
outside the virtual desktop. On Windows this doesn't just look off-center,
glfwSetWindowPos/GetWindowPos come back with garbage coordinates and the
window can end up invisible until you drag it back with win+shift+arrow.
SetWindowMonitor() already guards against this by anchoring to the workarea
origin when the window doesn't fit, so apply the same check here.
Repro: request InitWindow() with a size wider than the monitor and read
GetWindowPosition() right after. Before the fix this returns a huge bogus
x value instead of a small negative one. After the fix it's anchored to
the monitor origin. Verified on Windows 11 with a single monitor (couldn't
test the original portrait multi-monitor report from #6002 directly, don't
have that hardware, but the position math is the same code path).
Fixes#6002
Signed-off-by: Kyue <164024549+Gooh456@users.noreply.github.com>
If `innerRadius` is less than 0, it causes the outline to overlap itself and even grow outside of the polygon's bounds when `thick` is greater than `radius`. Clamping `innerRadius` to 0 fixes these problems.
* rlsw config section
* use raster flags to define rasterizer variants
* simplifies the generation of dispatch tables
* single dispatch table for the lines
same logic as for the points
* internal color interp state
* check whether vertex colors should be interpolated
* vector op helper macro + pick sampler once before primitive drawing
* op order tweaks
* refactoring without gotos for triangle and quad rasterizers
* same cleaning for the lines
* pico doesn't implement time.h
* add option for RLSW to hold a back buffer, and give it a sw method to swap
* Remove unused pointer and give swSwapColorBuffers a default nop-behaviour
* Fix compilation by removing old colorBackBuffer setters
* use the correct logger
* return line
* rename RLSW_BACKBUFFER to SW_DOUBLE_BUFFERING
* Fix DrawSphereWires (Less aggressively)
Summary:
- Eliminated some redundancies
- Fixed a bug(?) where the sphere would have 1 more "ring" (latitude division) than expected
- Fixed a bug where the top ring was double-covered
- Added comments denoting which code draws which lines
* DrawSphereWires + DrawSphereEx parity
Summary:
- Replaced DrawSphereWires algorithm with one based on the much faster algorithm from DrawSphereEx
- Fixed +1 ring quirk on DrawSphereEx to match the change made to DrawSphereWires
In #5980 a bug was introduced for `DrawRectangleRoundedLines()`. `DrawRectangleRoundedLines()` previously assumed that `DrawRectangleRoundedLinesEx()` uses `RL_LINES` when line thickness is 1 (which is no longer true, it now uses `RL_QUADS` or `RL_TRIANGLES`.)
I copy/pasted the previous `DrawRectangleRoundedLinesEx()` implementation and trimmed it down (since now the line thickness is always 1), so now `DrawRectangleRoundedLines()` uses `RL_LINES`. This makes it consistent with all other `Draw*Lines()` functions, which use `RL_LINES`.