@@ -59,7 +59,7 @@ public class LaunchOptions implements Serializable {
|
||||
private NativesDirectoryType nativesDirType;
|
||||
private String nativesDir;
|
||||
private ProcessPriority processPriority = ProcessPriority.NORMAL;
|
||||
private boolean useSoftwareRenderer;
|
||||
private Renderer renderer = Renderer.DEFAULT;
|
||||
private boolean useNativeGLFW;
|
||||
private boolean useNativeOpenAL;
|
||||
private boolean daemon;
|
||||
@@ -252,8 +252,8 @@ public class LaunchOptions implements Serializable {
|
||||
return processPriority;
|
||||
}
|
||||
|
||||
public boolean isUseSoftwareRenderer() {
|
||||
return useSoftwareRenderer;
|
||||
public Renderer getRenderer() {
|
||||
return renderer;
|
||||
}
|
||||
|
||||
public boolean isUseNativeGLFW() {
|
||||
@@ -442,8 +442,8 @@ public class LaunchOptions implements Serializable {
|
||||
return options.nativesDir;
|
||||
}
|
||||
|
||||
public boolean isUseSoftwareRenderer() {
|
||||
return options.useSoftwareRenderer;
|
||||
public Renderer getRenderer() {
|
||||
return options.renderer;
|
||||
}
|
||||
|
||||
public boolean isUseNativeGLFW() {
|
||||
@@ -592,8 +592,8 @@ public class LaunchOptions implements Serializable {
|
||||
return this;
|
||||
}
|
||||
|
||||
public Builder setUseSoftwareRenderer(boolean useSoftwareRenderer) {
|
||||
options.useSoftwareRenderer = useSoftwareRenderer;
|
||||
public Builder setRenderer(@NotNull Renderer renderer) {
|
||||
options.renderer = renderer;
|
||||
return this;
|
||||
}
|
||||
|
||||
|
||||
@@ -0,0 +1,8 @@
|
||||
package org.jackhuang.hmcl.game;
|
||||
|
||||
public enum Renderer {
|
||||
DEFAULT,
|
||||
ZINK,
|
||||
LLVMPIPE,
|
||||
D3D12
|
||||
}
|
||||
@@ -469,9 +469,16 @@ public class DefaultLauncher extends Launcher {
|
||||
env.put("INST_MC_DIR", repository.getRunDirectory(version.getId()).getAbsolutePath());
|
||||
env.put("INST_JAVA", options.getJava().getBinary().toString());
|
||||
|
||||
if (options.isUseSoftwareRenderer() && OperatingSystem.CURRENT_OS == OperatingSystem.LINUX) {
|
||||
env.put("LIBGL_ALWAYS_SOFTWARE", "1");
|
||||
env.put("__GLX_VENDOR_LIBRARY_NAME", "mesa");
|
||||
Renderer renderer = options.getRenderer();
|
||||
if (renderer != Renderer.DEFAULT && OperatingSystem.CURRENT_OS != OperatingSystem.OSX) {
|
||||
if (OperatingSystem.CURRENT_OS == OperatingSystem.LINUX) {
|
||||
env.put("__GLX_VENDOR_LIBRARY_NAME", "mesa");
|
||||
if (renderer == Renderer.LLVMPIPE)
|
||||
env.put("LIBGL_ALWAYS_SOFTWARE", "1");
|
||||
}
|
||||
|
||||
if (renderer != Renderer.LLVMPIPE)
|
||||
env.put("GALLIUM_DRIVER", renderer.name().toLowerCase(Locale.ROOT));
|
||||
}
|
||||
|
||||
LibraryAnalyzer analyzer = LibraryAnalyzer.analyze(version);
|
||||
|
||||
Reference in New Issue
Block a user