@@ -128,6 +128,10 @@ Public Module ModLaunch
|
||||
Loaders.Insert(3, New LoaderTask(Of Integer, Integer)("内存优化", AddressOf McLaunchMemoryOptimize) With {.ProgressWeight = 30})
|
||||
Case 2 '关闭
|
||||
End Select
|
||||
'显示设置
|
||||
If Setup.Get("LaunchGraphicSetup") Then
|
||||
Loaders.Insert(3, New LoaderTask(Of Integer, Integer)("检查显示设置", AddressOf McLaunchCheckGraphicSettings) With {.ProgressWeight = 2})
|
||||
End If
|
||||
Dim LaunchLoader As New LoaderCombo(Of Object)("Minecraft 启动", Loaders) With {.Show = False}
|
||||
If McLoginLoader.State = LoadState.Finished Then McLoginLoader.State = LoadState.Waiting '要求重启登录主加载器,它会自行决定是否启动副加载器
|
||||
'等待加载器执行并更新 UI
|
||||
@@ -203,6 +207,48 @@ NextInner:
|
||||
|
||||
#End Region
|
||||
|
||||
#Region "显示设置"
|
||||
|
||||
Private Sub McLaunchCheckGraphicSettings(Loader As LoaderTask(Of Integer, Integer))
|
||||
Const GPU_KEY As String = "Software\Microsoft\DirectX\UserGpuPreferences"
|
||||
Const TARGET_SETUP As String = "GpuPreference=2;"
|
||||
Dim javaPath As String = McLaunchJavaSelected.PathJavaw
|
||||
|
||||
McLaunchLog("显示设置开始")
|
||||
'读取现行设置
|
||||
Try
|
||||
Dim parentKey As Microsoft.Win32.RegistryKey = My.Computer.Registry.CurrentUser
|
||||
Dim regKey As Microsoft.Win32.RegistryKey = parentKey.OpenSubKey(GPU_KEY, False)
|
||||
If regKey IsNot Nothing Then
|
||||
Dim currentSetting As Object = regKey.GetValue(javaPath)
|
||||
If currentSetting IsNot Nothing And TARGET_SETUP.Equals(currentSetting.ToString()) Then
|
||||
McLaunchLog("不需要调整显示设置")
|
||||
Exit Sub
|
||||
End If
|
||||
regKey.Close()
|
||||
End If
|
||||
Catch ex As Exception
|
||||
McLaunchLog("无法读取注册表,跳过显示设置")
|
||||
Exit Sub
|
||||
End Try
|
||||
'更新设置
|
||||
Try
|
||||
If Not IsAdmin() Then RunAsAdmin("")
|
||||
Dim parentKey As Microsoft.Win32.RegistryKey = My.Computer.Registry.CurrentUser
|
||||
Dim regKey As Microsoft.Win32.RegistryKey = parentKey.OpenSubKey(GPU_KEY, True)
|
||||
If regKey Is Nothing Then
|
||||
regKey = parentKey.CreateSubKey(GPU_KEY)
|
||||
End If
|
||||
regKey.SetValue(javaPath, TARGET_SETUP)
|
||||
Catch ex As Exception
|
||||
McLaunchLog("无法写入显示设置")
|
||||
Exit Sub
|
||||
End Try
|
||||
McLaunchLog("已修改显示设置")
|
||||
End Sub
|
||||
|
||||
#End Region
|
||||
|
||||
#Region "预检测"
|
||||
|
||||
Private Sub McLaunchPrecheck()
|
||||
|
||||
@@ -104,6 +104,7 @@
|
||||
{"LaunchAdvanceAssets", New SetupEntry(False)},
|
||||
{"LaunchAdvanceUseLaunchWrapper", New SetupEntry(True)},
|
||||
{"LaunchAdvanceJava", New SetupEntry(False)},
|
||||
{"LaunchGraphicSetup", New SetupEntry(False)},
|
||||
{"LaunchRamType", New SetupEntry(0)},
|
||||
{"LaunchRamCustom", New SetupEntry(15)},
|
||||
{"LinkEula", New SetupEntry(False, Source:=SetupSource.Registry)},
|
||||
|
||||
@@ -170,6 +170,13 @@
|
||||
</Grid>
|
||||
</StackPanel>
|
||||
</local:MyCard>
|
||||
<local:MyCard Margin="0,0,0,15" Title="显示卡" CanSwap="True" IsSwaped="True">
|
||||
<StackPanel Margin="25,40,25,15">
|
||||
<local:MyHint Text="此选项对应 Windows 设置中的“系统 > 屏幕 > 显示卡”页面,只在部分设备上有实际效果。" IsWarn="False" Margin="0,0,0,10" />
|
||||
<local:MyCheckBox Text="启动前调整图形设置" x:Name="CheckAdvanceGraphicSetup" Tag="LaunchGraphicSetup"
|
||||
ToolTip="启动前将 Java 的显示卡设置调整为“高性能”。若游戏运行时 GPU 占用过低,或在使用 OBS 捕捉时遇到黑屏问题,可尝试此功能。" />
|
||||
</StackPanel>
|
||||
</local:MyCard>
|
||||
<local:MyCard x:Name="CardSkin" Margin="0,0,0,15" Title="离线皮肤" CanSwap="True" IsSwaped="True">
|
||||
<StackPanel Margin="25,40,25,15">
|
||||
<local:MyHint Text="由于技术问题,此功能只保证对 1.19.2 以前的版本有效!" IsWarn="True" Margin="0,0,0,10" />
|
||||
|
||||
@@ -45,6 +45,9 @@
|
||||
CType(FindName("RadioRamType" & Setup.Load("LaunchRamType")), MyRadioBox).Checked = True
|
||||
SliderRamCustom.Value = Setup.Get("LaunchRamCustom")
|
||||
|
||||
'显示卡
|
||||
CheckAdvanceGraphicSetup.Checked = Setup.Get("LaunchGraphicSetup")
|
||||
|
||||
'高级设置
|
||||
TextAdvanceJvm.Text = Setup.Get("LaunchAdvanceJvm")
|
||||
TextAdvanceGame.Text = Setup.Get("LaunchAdvanceGame")
|
||||
@@ -85,6 +88,7 @@
|
||||
Setup.Reset("LaunchAdvanceAssets")
|
||||
Setup.Reset("LaunchAdvanceRun")
|
||||
Setup.Reset("LaunchAdvanceRunWait")
|
||||
Setup.Reset("LaunchGraphicSetup")
|
||||
|
||||
Setup.Reset("LaunchArgumentJavaAll")
|
||||
Setup.Reset("LaunchArgumentJavaSelect")
|
||||
@@ -112,7 +116,7 @@
|
||||
Private Shared Sub ComboChange(sender As MyComboBox, e As Object) Handles ComboArgumentIndie.SelectionChanged, ComboArgumentVisibie.SelectionChanged, ComboArgumentWindowType.SelectionChanged, ComboArgumentPriority.SelectionChanged
|
||||
If AniControlEnabled = 0 Then Setup.Set(sender.Tag, sender.SelectedIndex)
|
||||
End Sub
|
||||
Private Shared Sub CheckBoxChange(sender As MyCheckBox, e As Object) Handles CheckAdvanceAssets.Change, CheckAdvanceJava.Change, CheckAdvanceRunWait.Change, CheckArgumentRam.Change, CheckAdvanceUseLaunchWrapper.Change
|
||||
Private Shared Sub CheckBoxChange(sender As MyCheckBox, e As Object) Handles CheckAdvanceAssets.Change, CheckAdvanceJava.Change, CheckAdvanceRunWait.Change, CheckArgumentRam.Change, CheckAdvanceUseLaunchWrapper.Change, CheckAdvanceGraphicSetup.Change
|
||||
If AniControlEnabled = 0 Then Setup.Set(sender.Tag, sender.Checked)
|
||||
End Sub
|
||||
|
||||
|
||||
Reference in New Issue
Block a user