mirror of
https://git.vladimir.cc/vladimir/ewsdr.git
synced 2026-08-25 18:43:51 +00:00
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:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user