gpt4 book ai didi

java - 为 Eclipse SWT 启用 WebGL

转载 作者:太空宇宙 更新时间:2023-11-04 06:15:00 25 4
gpt4 key购买 nike

我发现了一个有趣的组件,它是 Eclipse SWT Browser。它与 Webkit 绑定(bind),但不知道如何在其中启用 WebGL。

一种简单的方法是使用 SWT.MOZILLA,但在 Linux 上 GTK3 和 XULRUNNER 之间存在兼容性问题。

所以我想知道是否可以将浏览器模式设置为 SWT.WEBKIT (已完成),然后以某种方式访问​​ webkit 设置页面并将属性“enable-webgl”设置为 true (但我不知道如何)。

谢谢。

最佳答案

我遇到了同样的问题,以下内容对我有用。问题是 SWT 未在 webkit 中启用 webgl。要实现这一点,您需要更改 SWT 中的一些代码并重新构建。

创建构建环境。我在 Mac 上工作,所以我使用 VirtualBox 创建 Ubuntu 虚拟机(或使用 Linux 机器)。确保安装 JAVA JDK,因为这是编译 native 接口(interface)代码所必需的。您还需要 eclipse 。然后,我按照这些说明设置 SWT 构建环境 ( https://www.eclipse.org/swt/faq.php#howbuildjar )。我将 org.eclipse.swt 和 org.eclipse.swt.gtk.linux 项目导入到 eclipse 中。我正在使用 GTK 构建 32 位 Linux(根据 SWT 说明选择适合您需求的构建)。然后右键单击 org.eclipse.swt.gtk.linux 项目中的 build.xml 并选择“Run as”-->“Ant build...”进行构建。这将弹出一个对话框,您选择“build.jars”目标并单击“运行”按钮。

假设一切顺利,您应该得到这样的输出。

Buildfile: /development/swt/eclipse.platform.swt.binaries/bundles/org.eclipse.swt.gtk.linux.x86/build.xml
properties:
init:
clean:
[delete] Deleting directory /development/swt/eclipse.platform.swt.binaries/bundles/org.eclipse.swt.gtk.linux.x86/@dot
[delete] Deleting directory /development/swt/eclipse.platform.swt.binaries/bundles/org.eclipse.swt.gtk.linux.x86/temp.folder
properties:
init:
build.jars:
properties:
init:
@dot:
[mkdir] Created dir: /development/swt/eclipse.platform.swt.binaries/bundles/org.eclipse.swt.gtk.linux.x86/temp.folder/@dot.bin
copy.gtk.src:
[copy] Copying 692 files to /development/swt/eclipse.platform.swt.binaries/bundles/org.eclipse.swt.gtk.linux.x86/temp.folder/@dot.src
copy.translationfiles:
is64:
[echo] Is64=${is64}
replace64:
[echo] Converting java files to 32 bit
[javac] /development/swt/eclipse.platform.swt/bundles/org.eclipse.swt/buildFragment.xml:70: warning: 'includeantruntime' was not set, defaulting to build.sysclasspath=last; set to false for repeatable builds
[javac] Compiling 582 source files to /development/swt/eclipse.platform.swt.binaries/bundles/org.eclipse.swt.gtk.linux.x86/temp.folder/@dot.bin
[copy] Copying 6 files to /development/swt/eclipse.platform.swt.binaries/bundles/org.eclipse.swt.gtk.linux.x86/temp.folder/@dot.bin
[mkdir] Created dir: /development/swt/eclipse.platform.swt.binaries/bundles/org.eclipse.swt.gtk.linux.x86/@dot
[copy] Copying 848 files to /development/swt/eclipse.platform.swt.binaries/bundles/org.eclipse.swt.gtk.linux.x86/@dot
[jar] Building jar: /development/swt/eclipse.platform.swt.binaries/bundles/org.eclipse.swt.gtk.linux.x86/swt.jar
BUILD SUCCESSFUL
Total time: 59 seconds

BUILD SUCCESSFUL 上面的行提供了 swt.jar 的位置。如果您需要在目标系统上安装 libswt*.so 文件,此构建还将创建它们。

修改代码。现在我们可以构建 swt.jar,我们需要修改代码。我修改了2个java文件来启用webkit中的webgl。第一个文件是 org.eclipse.swt.internal.webkit.WebKitGTK.java。查找以下代码块并添加所示的 enable_webgl 定义。

/** Properties */
public static final byte[] default_encoding = ascii ("default-encoding"); // $NON-NLS-1$
public static final byte[] default_charset = ascii ("default-charset"); // $NON-NLS-1$
public static final byte[] enable_scripts = ascii ("enable-scripts"); // $NON-NLS-1$
public static final byte[] enable_plugins = ascii("enable-plugins");
public static final byte[] enable_universal_access_from_file_uris = ascii ("enable-universal-access-from-file-uris"); // $NON-NLS-1$
public static final byte[] height = ascii ("height"); // $NON-NLS-1$
public static final byte[] javascript_can_open_windows_automatically = ascii ("javascript-can-open-windows-automatically"); // $NON-NLS-1$
public static final byte[] locationbar_visible = ascii ("locationbar-visible"); // $NON-NLS-1$
public static final byte[] menubar_visible = ascii ("menubar-visible"); // $NON-NLS-1$
public static final byte[] SOUP_SESSION_PROXY_URI = ascii ("proxy-uri"); // $NON-NLS-1$
public static final byte[] statusbar_visible = ascii ("statusbar-visible"); // $NON-NLS-1$
public static final byte[] toolbar_visible = ascii ("toolbar-visible"); // $NON-NLS-1$
public static final byte[] user_agent = ascii ("user-agent"); // $NON-NLS-1$
public static final byte[] width = ascii ("width"); // $NON-NLS-1$
public static final byte[] x = ascii ("x"); // $NON-NLS-1$
public static final byte[] y = ascii ("y"); // $NON-NLS-1$
public static final byte[] enable_webgl = ascii ("enable-webgl"); // $NON-NLS-1$

下一个文件是org.eclipse.swt.browser.WebKit.java。查找创建方法以及更改 Web View 中设置的代码。我添加了一个调用来启用 webgl,如图所示。

long /*int*/ settings = WebKitGTK.webkit_web_view_get_settings (webView);
OS.g_object_set (settings, WebKitGTK.javascript_can_open_windows_automatically, 1, 0);
OS.g_object_set (settings, WebKitGTK.enable_webgl, 1, 0);

再次构建。完成这些更改并保存后,您就可以重建。只需再次运行“Build.jars”目标即可创建新的 swt.jar。

测试。我使用 SWT 示例中的代码创建了一个示例 swt 浏览器。然后将我的新 swt.jar 和 libswt*.so 部署到目标计算机。作为测试,我只是尝试了网络上众多示例中的一些。最后,您可能需要设置以下环境变量来启用 GTK3 和 WEBKIT2。

SWT_GTK3=1
SWT_WEBKIT2=1

我已经在运行 gentoo 的 nvidia 和 intel 电脑上对此进行了测试。

关于java - 为 Eclipse SWT 启用 WebGL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28204223/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com