mirror of
https://gitlab.gnome.org/GNOME/gtk.git
synced 2024-12-27 06:00:22 +00:00
gsk: Fix hidpi scaling
We store the vertices in (unscaled) window coords (but the item size is still scaled to match the texture size). Also, the projection/model-view multiplication order is switched so that the scale is applied at the right place.
This commit is contained in:
parent
1c7c77bc94
commit
e0ab6d5a3c
@ -364,7 +364,7 @@ gsk_gl_renderer_update_frustum (GskGLRenderer *self,
|
|||||||
{
|
{
|
||||||
GSK_NOTE (TRANSFORMS, g_print ("Updating the modelview/projection\n"));
|
GSK_NOTE (TRANSFORMS, g_print ("Updating the modelview/projection\n"));
|
||||||
|
|
||||||
graphene_matrix_multiply (projection, modelview, &self->mvp);
|
graphene_matrix_multiply (modelview, projection, &self->mvp);
|
||||||
|
|
||||||
graphene_frustum_init_from_matrix (&self->frustum, &self->mvp);
|
graphene_frustum_init_from_matrix (&self->frustum, &self->mvp);
|
||||||
|
|
||||||
@ -632,12 +632,12 @@ gsk_gl_renderer_add_render_item (GskGLRenderer *self,
|
|||||||
/* Each render item is an axis-aligned bounding box that we
|
/* Each render item is an axis-aligned bounding box that we
|
||||||
* transform using the given transformation matrix
|
* transform using the given transformation matrix
|
||||||
*/
|
*/
|
||||||
item.min.x = bounds.origin.x * scale_factor;
|
item.min.x = bounds.origin.x;
|
||||||
item.min.y = bounds.origin.y * scale_factor;
|
item.min.y = bounds.origin.y;
|
||||||
item.min.z = 0.f;
|
item.min.z = 0.f;
|
||||||
|
|
||||||
item.max.x = item.min.x + item.size.width;
|
item.max.x = item.min.x + bounds.size.width;
|
||||||
item.max.y = item.min.y + item.size.height;
|
item.max.y = item.min.y + bounds.size.height;
|
||||||
item.max.z = 0.f;
|
item.max.z = 0.f;
|
||||||
|
|
||||||
/* The location of the item, in normalized world coordinates */
|
/* The location of the item, in normalized world coordinates */
|
||||||
|
Loading…
Reference in New Issue
Block a user