From d7a173b0daf5efa4a2af68023bcb67856385b8c9 Mon Sep 17 00:00:00 2001 From: FunkyFr3sh Date: Sun, 13 Aug 2023 12:49:54 +0200 Subject: [PATCH] add option to configure d3d9 filter --- config/ConfigFormUnit.cpp | 49 +++++++++++++++++++++++++++++++++++++++ config/ConfigFormUnit.dfm | 24 +++++++++++++++++++ config/ConfigFormUnit.h | 2 ++ 3 files changed, 75 insertions(+) diff --git a/config/ConfigFormUnit.cpp b/config/ConfigFormUnit.cpp index 4f6fd10..fc4ed62 100644 --- a/config/ConfigFormUnit.cpp +++ b/config/ConfigFormUnit.cpp @@ -662,6 +662,12 @@ void __fastcall TConfigForm::FormCreate(TObject *Sender) if (renderer == "direct3d9on12") { RendererCbx->AddItem(L"Direct3D 12 (9On12)", NULL); RendererCbx->ItemIndex = 4; + + ShaderLbl->Caption = + ReplaceStr(ShaderLbl->Caption, "OpenGL", "Direct3D"); + + ShaderD3DCbx->Visible = true; + ShaderCbx->Visible = false; } else if (renderer == "openglcore") { RendererCbx->AddItem(L"OpenGL Core", NULL); @@ -669,6 +675,12 @@ void __fastcall TConfigForm::FormCreate(TObject *Sender) } else if (StartsStr("d", renderer)) { RendererCbx->ItemIndex = 1; + + ShaderLbl->Caption = + ReplaceStr(ShaderLbl->Caption, "OpenGL", "Direct3D"); + + ShaderD3DCbx->Visible = true; + ShaderCbx->Visible = false; } else if (StartsStr("o", renderer)) { RendererCbx->ItemIndex = 2; @@ -697,6 +709,20 @@ void __fastcall TConfigForm::FormCreate(TObject *Sender) { } + int d3d9_filter = ini->ReadInteger("ddraw", "d3d9_filter", 2); + + switch (d3d9_filter) { + case 0: + ShaderD3DCbx->ItemIndex = 0; + break; + case 1: + ShaderD3DCbx->ItemIndex = 1; + break; + default: + ShaderD3DCbx->ItemIndex = 2; + break; + } + Maxfps = ini->ReadInteger("ddraw", "maxfps", -1); MaxfpsChk->State = Maxfps != 0 ? tssOn : tssOff; @@ -868,6 +894,8 @@ void TConfigForm::SaveSettings() ini->WriteString("ddraw", "shader", ShaderCbx->Text); + ini->WriteInteger("ddraw", "d3d9_filter", ShaderD3DCbx->ItemIndex); + int maxfps = Maxfps == 0 ? -1 : Maxfps; ini->WriteInteger( @@ -1139,6 +1167,22 @@ void __fastcall TConfigForm::DevmodeChkClick(TObject *Sender) void __fastcall TConfigForm::RendererCbxChange(TObject *Sender) { + if (ContainsStr(RendererCbx->Text, "Direct3D")) { + + ShaderLbl->Caption = + ReplaceStr(ShaderLbl->Caption, "OpenGL", "Direct3D"); + + ShaderD3DCbx->Visible = true; + ShaderCbx->Visible = false; + } + else { + ShaderLbl->Caption = + ReplaceStr(ShaderLbl->Caption, "Direct3D", "OpenGL"); + + ShaderCbx->Visible = true; + ShaderD3DCbx->Visible = false; + } + SaveSettings(); } @@ -1151,6 +1195,11 @@ void __fastcall TConfigForm::ShaderCbxChange(TObject *Sender) SaveSettings(); } +void __fastcall TConfigForm::ShaderD3DCbxChange(TObject *Sender) +{ + SaveSettings(); +} + void __fastcall TConfigForm::MaxfpsChkClick(TObject *Sender) { SaveSettings(); diff --git a/config/ConfigFormUnit.dfm b/config/ConfigFormUnit.dfm index 176301d..03ead2a 100644 --- a/config/ConfigFormUnit.dfm +++ b/config/ConfigFormUnit.dfm @@ -3178,6 +3178,30 @@ object ConfigForm: TConfigForm Height = 31 OnPaint = PboxPaint end + object ShaderD3DCbx: TComboBox + Left = 41 + Top = 132 + Width = 425 + Height = 29 + BevelEdges = [] + BevelInner = bvNone + BevelOuter = bvSpace + Style = csDropDownList + DropDownCount = 10 + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -16 + Font.Name = 'Segoe UI' + Font.Style = [] + ParentFont = False + TabOrder = 6 + Visible = False + OnChange = ShaderD3DCbxChange + Items.Strings = ( + 'Nearest neighbor' + 'Bilinear' + 'Bicubic Catmull-Rom') + end object RendererCbx: TComboBox Left = 41 Top = 55 diff --git a/config/ConfigFormUnit.h b/config/ConfigFormUnit.h index 4ff127a..bf1eaec 100644 --- a/config/ConfigFormUnit.h +++ b/config/ConfigFormUnit.h @@ -78,6 +78,7 @@ __published: // Von der IDE verwaltete Komponenten TLabel *UnlockCursor2KeyLbl; TLabel *ScreenshotLbl; TEdit *ScreenshotEdt; + TComboBox *ShaderD3DCbx; void __fastcall DisplayBtnClick(TObject *Sender); void __fastcall AdvancedBtnClick(TObject *Sender); void __fastcall CompatibilityBtnClick(TObject *Sender); @@ -105,6 +106,7 @@ __published: // Von der IDE verwaltete Komponenten void __fastcall HotkeyBtnClick(TObject *Sender); void __fastcall HotkeyEdtKeyDown(TObject *Sender, WORD &Key, TShiftState Shift); void __fastcall HotkeyEdtKeyUp(TObject *Sender, WORD &Key, TShiftState Shift); + void __fastcall ShaderD3DCbxChange(TObject *Sender);