feat(display): скорость водопада с max-hold накоплением + MSAA спектра

- настройка Speed (wf_speed_div 1/2/4/8, Waterfall→Rendering): замедление
  накапливает кадры max-hold'ом в SetWaterfallData — короткие посылки (CW)
  не выпадают из строки; двойная децимация MainForm убрана
  (EffectiveWfInterval, CPU-путь не быстрее полукадровой)
- настройка Anti-aliasing (spec_msaa 1/2/4/8, дефолт 4x, Spectrum→Rendering):
  MultiSampling на GL-контроле спектра; смена в рантайме пересоздаёт
  контекст → ResetGLCache обнуляет текстурные кэши без glDelete

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
2026-07-04 16:48:55 +03:00
co-authored by Claude Fable 5
parent 092a202f5f
commit e260995218
6 changed files with 164 additions and 35 deletions
+35
View File
@@ -110,6 +110,7 @@ type
procedure InvalidateGridCache; override;
procedure InvalidateOverlayCache; override;
procedure InvalidateVfoOverlay; override;
procedure ResetGLCache;
procedure SetTheme(const T: TAppTheme); override;
end;
@@ -424,6 +425,40 @@ begin
FOverlayDirty := True;
end;
// Контекст пересоздан (смена MSAA → RecreateWnd): все GL-имена текстур
// стали недействительны. Обнуляем кэши БЕЗ glDelete — старого контекста
// уже нет, а в новом эти id могут достаться другим текстурам.
procedure TSpectrumViewOpenGL.ResetGLCache;
procedure Zap(var T: TGLTextureCache);
begin
T.Tex := 0; T.W := 0; T.H := 0; T.Dirty := True;
end;
var
i: Integer;
begin
Zap(FGridLabelTex);
Zap(FAGCLabelTex);
Zap(FAGCHangLabelTex);
Zap(FMarkerLabelTex);
Zap(FADCOverlayTex);
Zap(FSampleOverlayTex);
Zap(FVfoOverlayTex);
Zap(FBandOverlayTex);
for i := 0 to High(FSliceTex) do Zap(FSliceTex[i].Tex);
for i := 0 to High(FLetterTex) do Zap(FLetterTex[i]);
FLastAGCText := '';
FLastMarkerText := '';
FGridDirty := True;
FOverlayDirty := True;
FSampleOverlayDirty := True;
FVfoOverlayDirty := True;
FBandOverlayDirty := True;
FGLSpectrumW := 0;
FGLSpectrumH := 0;
end;
function TSpectrumViewOpenGL.FormatFreqGL(Hz: Double): string;
var Mhz: Int64; KHz, Rest: Integer;
begin