#7053·openscad

更改颜色方案不会重新为已渲染的模型设置颜色

作者: whosawhatsis创建于 2026年9月18日更新于 2026年9月18日

有两个独立的事情必须正确,而两者都没有: 1. **颜色方案被烘焙到缓存的几何体中。** `ManifoldGeometry::toPolySet()` 从 `RenderSettings::inst()->colorscheme` 中解析 `CGAL_FACE_FRONT_COLOR` 和 `CGAL_FACE_BACK_COLOR`,并将结果的颜色存储到 `PolySet` 中。该 `PolySet` 进入到几何体缓存中,并被重复使用; `MainWindow::setColorScheme()` 不会使其失效。因此,缓存的几何体永远保留着在构建时活动的颜色方案的颜色。 2. **顶点缓冲区永远不会重建。** 每个渲染器的 `prepare()` 仅在它们为空时才构建 `VertexStateContainer`,而 `setColorScheme()` 仅刷新 `colormap_`。在构建时,每个顶点的颜色都会烘焙到 VBO 中,因此即使没有颜色方案的几何体,也会保留其上传的颜色。 仅修复其中一个不会改变任何可见内容:如果修复了 (1),渲染器仍然会重绘过时的缓冲区,如果修复了 (2)…

内容来源: openscad/openscad