跨平台应用程序嵌入Webkit并支持WebGL

时间:2014-02-20 11:18:55

标签: python webkit cross-platform webgl vala

我需要创建一个跨平台(Win,Mac和Linux)应用程序,嵌入一个支持HTML5和WebGL的WebKit浏览器。 到目前为止,我使用Java / SWT方式,但是在Windows上使用webkit只能部分实现(仅限win32,仅限safari 5)并且支持html5,而且根本没有3D。

在linux中,我成功地将webkit2gtk3与vala中的WebGL支持嵌入,如下所示:

using GLib;
using Gtk;
using WebKit;

public class Browser : Window {
    private const string URL = "http://lo-th.github.io/Oimo.js/index.html";

    public Browser() {
        this.add(this.create_web_window());

        this.destroy.connect(Gtk.main_quit);
    }

    private ScrolledWindow create_web_window() {
        var view = new WebView();
        view.get_settings().set_enable_webgl(true);
        view.load_uri(Browser.URL);

        var scrolled_window = new ScrolledWindow(null, null);
        scrolled_window.set_policy(PolicyType.AUTOMATIC, PolicyType.AUTOMATIC);
        scrolled_window.add(view);

        return scrolled_window;
    }

    public static int main(string[] args) {
        Gtk.init(ref args);

        var browser = new Browser();
        browser.resize(800,600);
        browser.show_all();

        Gtk.main();

        return 0;
    }
}

编译
valac --vapidir=. --pkg gtk+-3.0 --pkg webkit2gtk-3.0 --thread hellowebkit.vala

我也像这样成功使用python:

#!/usr/bin/env python

import gtk, webkit

w = gtk.Window()
w.set_title("Example Editor")
w.connect("destroy", gtk.main_quit)
w.resize(800,600)

scroll = gtk.ScrolledWindow()
w.add(scroll)

browser = webkit.WebView()
browser.get_settings().set_property("enable-webgl", True)
scroll.add(browser)

w.show_all()

browser.open("http://lo-th.github.io/Oimo.js/index.html");

gtk.main()

所以现在的问题是:是否有机会(和文档)获得上述任何一项(编译)并在Win32 / 64和OSX中运行并支持WebGL?

2 个答案:

答案 0 :(得分:2)

可能这可能会有所帮助

https://github.com/rogerwang/node-webkit

基于Chromium引擎和node.js的App运行时支持HTML5,CSS3,JS和WebGL。 尝试过没有WebGL的简单项目,工作顺利。也很容易设置。

检查此幻灯片共享,可能有助于确定它是否相关

https://speakerdeck.com/zcbenz/node-webkit-app-runtime-based-on-chromium-and-node-dot-js

更新:找到了几个替代品来做类似的事情,还没有尝试过

  1. https://github.com/milani/appjs
  2. https://www.tidekit.com/
  3. 另一个可能帮助Alternatives to node webkit? (filesize of importance)

    的stackoverflow线程

答案 1 :(得分:0)

您的 Vala示例使用WebKit2Gtk3。不幸的是,WebKit2Gtk3尚未移植到Windows。 Citing Carlos Garcia Campos

  

它总是在我们的TODO列表中,但主要是作为非常低优先级的任务   由于缺乏windows知识,时间和人们感兴趣。任何   为WebKit2GTK +添加Windows支持的贡献将超过   欢迎,当然。

可能只有解决方案是聘请开发人员来完成这项任务: - (


我不确定您的 Python示例中使用了哪个版本的WebKitGtk。 WebKitGtk3应该适用于Windows,WebKit2Gtk3不适用于Windows。但是,我没有在Windows上运行Python / GTK / WebKitGtk应用程序的经验。