Use the drawing buffer width instead of the canvas width for imagery splitting #5743
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
On systems where the drawing buffer width is not equal to the canvas width in CSS pixels, imagery splitting happens at the wrong position. To see what I mean, visit this URL in Microsoft Edge on a machine with a high DPI display:
http://cesiumjs.org/Cesium/Apps/Sandcastle/index.html?src=Imagery%20Layers%20Split.html&label=All
If you can see the split at all, it won't be in the center of the screen as it is on other systems, and it won't line up with the divider line.
Edge:
Chrome:
In case you're wondering what Edge has to do with this: not much. Edge is missing support for the
image-rendering
CSS style, so Cesium chooses to ignore thedevicePixelRatio
and render the canvas with full device pixels, which guarantees and CSS pixels and drawing buffer pixels are not the same, triggering the bug. IMO thisimagery-rendering
behavior is pretty questionable - it would be better for Cesium to be slightly blurry on IE/Edge rather than unusably slow - but that's a separate issue.