(&mut self, device: &Device, queue: &Queue, state: &PlotState)
| 501 | binding: 1, |
| 502 | resource: BindingResource::Sampler(&self.composite_sampler), |
| 503 | }, |
| 504 | ], |
| 505 | }); |
| 506 | |
| 507 | self.msaa_targets = Some(MsaaTargets { |
| 508 | width, |
| 509 | height, |
| 510 | _msaa_texture: msaa_texture, |
| 511 | msaa_view, |
| 512 | _resolved_texture: resolved_texture, |
| 513 | resolved_view, |
| 514 | composite_bind_group, |
| 515 | }); |
| 516 | } |
| 517 | |
| 518 | fn sync(&mut self, device: &Device, queue: &Queue, state: &PlotState) { |
| 519 | // Check if render offset changed - if so, we need to rebuild vertex buffers |
| 520 | // since positions are stored relative to render_offset |
| 521 | let offset_changed = self.versions.render_offset != state.camera.render_offset; |
| 522 | |
| 523 | if state.markers_version != self.versions.markers || offset_changed { |
| 524 | self.rebuild_markers(device, queue, state); |
| 525 | self.versions.markers = state.markers_version; |
| 526 | } |
| 527 | if state.fills_version != self.versions.fills || offset_changed { |
| 528 | self.rebuild_fills(device, queue, state); |
| 529 | self.versions.fills = state.fills_version; |
| 530 | } |
| 531 | if state.lines_version != self.versions.lines || offset_changed { |
| 532 | self.rebuild_lines(device, queue, state); |
| 533 | self.versions.lines = state.lines_version; |
| 534 | } |
| 535 | |
| 536 | // Rebuild reference lines whenever camera changes |
| 537 | self.rebuild_reflines(device, queue, state); |
| 538 | |
| 539 | // Update cached render offset |
| 540 | self.versions.render_offset = state.camera.render_offset; |
| 541 | |
| 542 | // Selection is rebuilt whenever it's active. |
| 543 | self.rebuild_selection(device, queue, state); |
no test coverage detected