仍然闪烁
This commit is contained in:
@@ -44,14 +44,15 @@ struct Point_Set_Render_State : Render_State, Point_Set_Prop {};
|
||||
struct Point_Set_Private : Typed_Render_Data<Point_Set, Point_Set_Render_State, Point_Set_Input_Data> {
|
||||
std::pmr::vector<PointF> data_points{memory_resource(Memory_Domain::Point_Set)};
|
||||
std::pmr::vector<Color> data_colors{memory_resource(Memory_Domain::Point_Set)};
|
||||
void prepare_data(const Render_Frame_Snapshot&) override {
|
||||
sync_state_pipeline();
|
||||
Point_Set_Input_Data* input = render_input_data();
|
||||
void prepare_data(const Render_Frame_Snapshot&, const Renderable_Frame_View& frame_view) override {
|
||||
Point_Set_Input_Data* input = render_input_data(frame_view);
|
||||
if (!input)
|
||||
return;
|
||||
input->read_all([this](std::pmr::vector<PointF>& points, std::pmr::vector<Color>& colors) {
|
||||
data_points.swap(points);
|
||||
data_colors.swap(colors);
|
||||
});
|
||||
clear_render_input();
|
||||
frame_view.consume_input();
|
||||
}
|
||||
void draw_point(Canvas& canvas, const PointF& point, const Point_Set_Render_State* s) {
|
||||
double half = s->size / 2.0;
|
||||
@@ -66,13 +67,15 @@ struct Point_Set_Private : Typed_Render_Data<Point_Set, Point_Set_Render_State,
|
||||
canvas.draw_line(PointF{point.x, point.y - half}, PointF{point.x, point.y + half});
|
||||
}
|
||||
}
|
||||
void draw(Canvas& canvas, const Render_Frame_Snapshot&) override {
|
||||
Point_Set_Render_State* s = render_state();
|
||||
void draw(Canvas& canvas, const Render_Frame_Snapshot& snapshot, const Renderable_Frame_View& frame_view) override {
|
||||
Point_Set_Render_State* s = render_state(frame_view);
|
||||
if (!s)
|
||||
return;
|
||||
auto domain_axis = s->domain_axis.lock();
|
||||
auto value_axis = s->value_axis.lock();
|
||||
if (!domain_axis || !value_axis || data_points.empty())
|
||||
return;
|
||||
Axis_Mapping_2D mapping = Axis_Render_Access::mapping(domain_axis.get(), value_axis.get());
|
||||
Axis_Mapping_2D mapping = Axis_Render_Access::mapping(domain_axis.get(), value_axis.get(), snapshot);
|
||||
std::pmr::vector<PointF> points(frame_memory_resource());
|
||||
points.reserve(data_points.size());
|
||||
for (int i = 0; i < data_points.size(); ++i) {
|
||||
|
||||
Reference in New Issue
Block a user