Revert "fix(opengl): use Lazarus OpenGLContext"

This reverts commit 004c363df8.
This commit is contained in:
2026-07-08 11:56:09 +03:00
parent 004c363df8
commit ce9cfd730f
6 changed files with 26 additions and 14 deletions
+3 -2
View File
@@ -25,7 +25,7 @@ uses
Classes, SysUtils, StrUtils, FreqDisplay, DeviceForm, VfoOverlay, SampleRateOverlay, BandPlanOverlay,
FlatButton, FlatSlider, FlatDropDown, AppTheme, Forms, Controls, Graphics, Dialogs,
StdCtrls, ExtCtrls, Buttons, Menus, Math, Types,
OpenGLContext,
OpenGLContextEx,
LCLIntf, LCLType, GraphType,
HPSDRProtocol, HPSDRNetwork,
WDSP, WDSPEngine, AudioOutput, AudioInput,
@@ -1004,7 +1004,8 @@ begin
FSplitterRatio := 0.40;
FSplitterDrag := False;
// Штатный Lazarus OpenGLContext включается только явным ключом --opengl.
// OpenGLContextEx (QOpenGLWidget-бэкенд) работает и в нативном Wayland,
// старая X11-заглушка больше не нужна
FUseOpenGLSpectrum := HasOpenGLSpectrumSwitch;
if FUseOpenGLSpectrum then
FSpecView := TSpectrumViewOpenGL.Create
+4 -2
View File
@@ -16,7 +16,7 @@ interface
uses
Classes, SysUtils, Graphics, Controls, Math, Types,
OpenGLContext, GL,
OpenGLContextEx, GL,
AppTheme, SpectrumView, VfoOverlay, BandPlanOverlay,
WaterfallView, WaterfallViewOpengl;
@@ -980,7 +980,9 @@ begin
H := FGLControl.Height;
if (W <= 0) or (H <= 0) then Exit;
glViewport(0, 0, W, H);
// HiDPI: viewport в физических пикселях FBO, координаты — логические
glViewport(0, 0, Round(W * FGLControl.PixelScale),
Round(H * FGLControl.PixelScale));
glMatrixMode(GL_PROJECTION);
glLoadIdentity;
glOrtho(0, W, H, 0, -1, 1);
+14 -6
View File
@@ -15,7 +15,7 @@ interface
uses
Classes, SysUtils, Graphics, Controls, Math,
OpenGLContext, GL,
OpenGLContextEx, GL,
AppTheme, WaterfallView;
type
@@ -322,8 +322,10 @@ end;
procedure TWaterfallViewOpenGL.SetWaterfallBitmapSize(W, H: Integer);
begin
if (W <= 0) or (H <= 0) then Exit;
// Ширина текстуры — в физических пикселях (HiDPI): строка водопада должна
// ложиться 1:1 на пиксели фреймбуфера, иначе GL размажет её при увеличении.
if Assigned(FGLControl) and FGLControl.MakeCurrent then
EnsureTexture(W, H);
EnsureTexture(Round(W * FGLControl.PixelScale), H);
FWaterfallDirty := True;
end;
@@ -334,7 +336,8 @@ end;
procedure TWaterfallViewOpenGL.PaintWaterfall(Sender: TObject);
var
W, H: Integer;
W, H, TexW: Integer;
Scale: Double;
R, G, B: GLFloat;
begin
if Sender is TOpenGLControl then FGLControl := TOpenGLControl(Sender);
@@ -342,7 +345,12 @@ begin
W := FGLControl.Width;
H := FGLControl.Height;
if (W <= 0) or (H <= 0) then Exit;
glViewport(0, 0, W, H);
// HiDPI: viewport покрывает весь FBO (физические пиксели), координаты
// остаются логическими; строка водопада строится в физической ширине.
Scale := FGLControl.PixelScale;
TexW := Round(W * Scale);
glViewport(0, 0, TexW, Round(H * Scale));
glMatrixMode(GL_PROJECTION);
glLoadIdentity;
glOrtho(0, W, H, 0, -1, 1);
@@ -357,10 +365,10 @@ begin
glClearColor(R, G, B, 1);
glClear(GL_COLOR_BUFFER_BIT);
EnsureTexture(W, H);
EnsureTexture(TexW, H);
if FWaterfallDirty then
begin
UploadCurrentRow(W);
UploadCurrentRow(TexW);
FWaterfallDirty := False;
end;
DrawTextureWrapped(W, H);
+3 -2
View File
@@ -18,7 +18,7 @@ interface
uses
Classes, SysUtils, Math, Graphics, Controls, ExtCtrls,
OpenGLContext, GL, AppTheme, WDSP;
OpenGLContextEx, GL, AppTheme, WDSP;
type
TWidebandView = class
@@ -1077,7 +1077,8 @@ begin
UploadLabelTextureToGL;
FGLBackgroundDirty := False;
end;
glViewport(0, 0, W, H);
// HiDPI: viewport в физических пикселях FBO, координаты — логические
glViewport(0, 0, Round(W * C.PixelScale), Round(H * C.PixelScale));
glMatrixMode(GL_PROJECTION);
glLoadIdentity;
glOrtho(0, W, 0, H, -1, 1);
+1 -1
View File
@@ -141,7 +141,7 @@
</RunParams>
<RequiredPackages>
<Item>
<PackageName Value="LazOpenGLContext"/>
<PackageName Value="LazOpenGLContextEx"/>
</Item>
<Item>
<PackageName Value="LCL"/>
+1 -1
View File
@@ -15,7 +15,7 @@ uses
{$ENDIF}
Interfaces, // LCL platform
WindowsDPI,
Forms, LazOpenGLContext,
Forms, LazOpenGLContextEx,
MainForm, AudioOutput, DeviceForm, FlatButton, FreqDisplay, VfoOverlay,
WDSP, WDSPEngine, WebPageHtml, WebServer, WebUtils, WinFirewall, WsClient,
Settings, RadioController;