如何在JavaFX中禁用或绕过硬件图形加速(棱镜)

2022-09-02 00:38:32

OS:OSX Mountain Lion。

系统:虚拟盒子4.2.6。

Java: 1.7.0.40-ea-b34

我想为我的 JAVAFX 应用程序禁用硬件加速,因为我的系统 (mac) 上没有硬件加速。因此,当没有硬件加速时,我在执行JAVAFX应用程序时遇到致命错误。该错误与“棱镜引擎管道”有关,当java尝试执行openGL本机库时会发生该错误。所以我想禁用棱镜。

我看到有一些vm参数可以控制棱镜行为,例如..Dprism.forceGPU=true;

有没有像上面这样的东西来禁用棱镜或openGL请求?

致命错误(openGl 相关代码)

Stack: [0x000000016c8f9000,0x000000016c9f9000], sp=0x000000016c9f7f40, free space=1019k
Native frames: (J=compiled Java code, j=interpreted, Vv=VM code, C=native code)
C [libobjc.A.dylib+0x639f] objc_msgSend_fixup+0x5f
C [AppKit+0x28134c] -[NSOpenGLContext initWithFormat:shareContext:]+0xac
C [libprism-es2.dylib+0x4e9f] createContext+0x1b3
C [libprism-es2.dylib+0x4729] Java_com_sun_prism_es2_gl_mac_MacGLFactory_nInitialize+0xa2
j com.sun.prism.es2.gl.mac.MacGLFactory.nInitialize([I)J+0
j com.sun.prism.es2.gl.mac.MacGLFactory.initialize(Ljava/lang/Class;Lcom/sun/prism/es2/gl/GLPixelFormat$Attributes;)Z+73
j com.sun.prism.es2.ES2Pipeline.<clinit>()V+54 

答案 1

j2d 图形管道在 JavaFX 8 中已不推荐使用,因此最好使用软件管道:。要验证您是否实际使用它,您可以打开日志记录:-Dprism.order=sw-Dprism.verbose=true


答案 2

看看这个论坛: https://forums.oracle.com/message/11018975

将其添加到您的 Java 执行中:

-Dprism.order=j2d

这应该可以解决问题。


推荐