{"id":15054990,"url":"https://github.com/node-3d/deps-qmlui-raub","last_synced_at":"2026-01-24T00:59:45.930Z","repository":{"id":16585923,"uuid":"80296177","full_name":"node-3d/deps-qmlui-raub","owner":"node-3d","description":"Offscreen OpenGL Qt QML renderer","archived":false,"fork":false,"pushed_at":"2023-10-31T17:49:42.000Z","size":2108,"stargazers_count":2,"open_issues_count":0,"forks_count":1,"subscribers_count":2,"default_branch":"master","last_synced_at":"2024-11-11T10:48:35.622Z","etag":null,"topics":["binary","dll","graphics","gui","headers","lib","node-3d","offscreen-rending","opengl","qml","qt"],"latest_commit_sha":null,"homepage":"https://github.com/node-3d/node-3d","language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/node-3d.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2017-01-28T16:45:40.000Z","updated_at":"2024-10-15T10:24:57.000Z","dependencies_parsed_at":"2022-07-26T01:16:30.137Z","dependency_job_id":"b9aa67bd-f159-49b7-a63c-f7854aceab56","html_url":"https://github.com/node-3d/deps-qmlui-raub","commit_stats":null,"previous_names":["raub/node-deps-qmlui"],"tags_count":5,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/node-3d%2Fdeps-qmlui-raub","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/node-3d%2Fdeps-qmlui-raub/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/node-3d%2Fdeps-qmlui-raub/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/node-3d%2Fdeps-qmlui-raub/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/node-3d","download_url":"https://codeload.github.com/node-3d/deps-qmlui-raub/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":225415286,"owners_count":17470863,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["binary","dll","graphics","gui","headers","lib","node-3d","offscreen-rending","opengl","qml","qt"],"created_at":"2024-09-24T21:39:20.029Z","updated_at":"2026-01-24T00:59:45.905Z","avatar_url":"https://github.com/node-3d.png","language":"C","funding_links":[],"categories":[],"sub_categories":[],"readme":"# QmlUi binaries\n\nThis is a part of [Node3D](https://github.com/node-3d) project.\n\n[![NPM](https://badge.fury.io/js/deps-qmlui-raub.svg)](https://badge.fury.io/js/deps-qmlui-raub)\n[![ESLint](https://github.com/node-3d/deps-qmlui-raub/actions/workflows/eslint.yml/badge.svg)](https://github.com/node-3d/deps-qmlui-raub/actions/workflows/eslint.yml)\n[![Test](https://github.com/node-3d/deps-qmlui-raub/actions/workflows/test.yml/badge.svg)](https://github.com/node-3d/deps-qmlui-raub/actions/workflows/test.yml)\n[![Cpplint](https://github.com/node-3d/deps-qmlui-raub/actions/workflows/cpplint.yml/badge.svg)](https://github.com/node-3d/deps-qmlui-raub/actions/workflows/cpplint.yml)\n[![Build](https://github.com/node-3d/deps-qmlui-raub/actions/workflows/build.yml/badge.svg)](https://github.com/node-3d/deps-qmlui-raub/actions/workflows/build.yml)\n\n```console\nnpm i -s deps-qmlui-raub\n```\n\n**OpenGL QML offscreen** renderer with **non-Qt C++ API**.\nUses [QQuickRenderControl](https://doc.qt.io/qt-6/qquickrendercontrol.html) (**Qt 6.8.0**) to render QML\nscenes to textures. The QML renderer has a separate OpenGL context, so\n[resource sharing](https://www.glfw.org/docs/3.4/context_guide.html#context_sharing) is used.\n\nBinaries are prebuilt and then used as dependency package.\n\n* Platforms (x64): Windows, Linux, Linux ARM, MacOS ARM.\n* Library: QmlUi.\n* Linking: static dll-type.\n\n\n## Common workflow\n\n1. Create a window and initialize OpenGL context.\n1. Call `QmlUi::init2(...)` to create the QML rendering surface (and its shared OpenGL context).\n1. Instantiate `QmlUi` and load a QML scene.\n1. Receive an OpenGL texture ID and use it somehow.\n1. Send/receive input and other events.\n\nSee [QmlUi header](/include/qml-ui.hpp) for more details.\n\n\n## Building addons\n\nRequiring this module on Windows - `require('deps-qmlui-raub')` - adds Qt's DLL\nlocation to ENV PATH. On Unix this does nothing, as library directories are not in ENV PATH.\nThe paths for Unix have to be compiled into the node-addon with `rpath` option.\n\n\u003cdetails\u003e\n\n\u003csummary\u003e\u003cb\u003ebinding.gyp\u003c/b\u003e\u003c/summary\u003e\n\n```javascript\n  'variables': {\n    'qt_core_bin': '\u003c!(node -p \"require(\\'deps-qmlui-raub\\').core.bin\")',\n    'qt_gui_bin': '\u003c!(node -p \"require(\\'deps-qmlui-raub\\').gui.bin\")',\n    'qt_qml_bin': '\u003c!(node -p \"require(\\'deps-qmlui-raub\\').qml.bin\")',\n    'qmlui_include': '\u003c!(node -p \"require(\\'deps-qmlui-raub\\').include\")',\n    'qmlui_bin': '\u003c!(node -p \"require(\\'deps-qmlui-raub\\').bin\")',\n  },\n  ...\n  'targets': [\n    {\n      'target_name': '...',\n      \n      'include_dirs': [\n        '\u003c(qmlui_include)',\n      ],\n      \n      'library_dirs': [ '\u003c(qmlui_bin)' ],\n      'libraries'    : [ '-lqmlui' ],\n      \n      'conditions': [\n        \n        ['OS==\"linux\"', {\n          'libraries': [\n            \"-Wl,-rpath,'$$ORIGIN'\",\n            \"-Wl,-rpath,'$$ORIGIN/../node_modules/deps-qt-core-raub/bin-linux'\",\n            \"-Wl,-rpath,'$$ORIGIN/../node_modules/deps-qt-gui-raub/bin-linux'\",\n            \"-Wl,-rpath,'$$ORIGIN/../node_modules/deps-qt-qml-raub/bin-linux'\",\n            \"-Wl,-rpath,'$$ORIGIN/../node_modules/deps-qmlui-raub/bin-linux'\",\n            \"-Wl,-rpath,'$$ORIGIN/../../deps-qt-core-raub/bin-linux'\",\n            \"-Wl,-rpath,'$$ORIGIN/../../deps-qt-gui-raub/bin-linux'\",\n            \"-Wl,-rpath,'$$ORIGIN/../../deps-qt-qml-raub/bin-linux'\",\n            \"-Wl,-rpath,'$$ORIGIN/../../deps-qmlui-raub/bin-linux'\",\n          ],\n        }],\n        \n        ['OS==\"mac\"', {\n          'libraries': [\n            '\u003c(qmlui_bin)/libqmlui.dylib',\n            '-Wl,-rpath,@loader_path',\n            '-Wl,-rpath,@loader_path/../node_modules/deps-qt-core-raub/bin-osx',\n            '-Wl,-rpath,@loader_path/../node_modules/deps-qt-gui-raub/bin-osx',\n            '-Wl,-rpath,@loader_path/../node_modules/deps-qt-qml-raub/bin-osx',\n            '-Wl,-rpath,@loader_path/../node_modules/deps-qmlui-raub/bin-osx',\n            '-Wl,-rpath,@loader_path/../../deps-qt-core-raub/bin-osx',\n            '-Wl,-rpath,@loader_path/../../deps-qt-gui-raub/bin-osx',\n            '-Wl,-rpath,@loader_path/../../deps-qt-qml-raub/bin-osx',\n            '-Wl,-rpath,@loader_path/../../deps-qmlui-raub/bin-osx',\n          ],\n        }],\n        \n        ['OS==\"win\"', {\n          'libraries': [ '-lqmlui' ],\n        }],\n        \n      ],\n    },\n```\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\n\u003csummary\u003e\u003cb\u003ePreload libraries\u003c/b\u003e\u003c/summary\u003e\n\n```cpp\n#ifdef __linux__\n  #include \u003cdlfcn.h\u003e\n#endif\n\n  // ... inside some kind of init() function\n  #ifdef __linux__\n  dlopen(\"libicui18n.so.73\", RTLD_NOW | RTLD_GLOBAL);\n  dlopen(\"libicuuc.so.73\", RTLD_NOW | RTLD_GLOBAL);\n  dlopen(\"libicudata.so.73\", RTLD_NOW | RTLD_GLOBAL);\n  dlopen(\"libicuio.so.73\", RTLD_NOW | RTLD_GLOBAL);\n  dlopen(\"libicule.so.73\", RTLD_NOW | RTLD_GLOBAL);\n  dlopen(\"libicutu.so.73\", RTLD_NOW | RTLD_GLOBAL);\n  dlopen(\"libQt6Core.so.6\", RTLD_NOW | RTLD_GLOBAL);\n  dlopen(\"libQt6Network.so.6\", RTLD_NOW | RTLD_GLOBAL);\n  dlopen(\"libQt6DBus.so.6\", RTLD_NOW | RTLD_GLOBAL);\n  dlopen(\"libQt6Gui.so.6\", RTLD_NOW | RTLD_GLOBAL);\n  dlopen(\"libQt6OpenGL.so.6\", RTLD_NOW | RTLD_GLOBAL);\n  dlopen(\"libQt6Widgets.so.6\", RTLD_NOW | RTLD_GLOBAL);\n  dlopen(\"libQt6XcbQpa.so.6\", RTLD_NOW | RTLD_GLOBAL);\n  dlopen(\"libQt6Qml.so.6\", RTLD_NOW | RTLD_GLOBAL);\n  dlopen(\"libQt6Quick.so.6\", RTLD_NOW | RTLD_GLOBAL);\n  dlopen(\"libQt6QuickControls2.so.6\", RTLD_NOW | RTLD_GLOBAL);\n  dlopen(\"libQt6QuickTemplates2.so.6\", RTLD_NOW | RTLD_GLOBAL);\n  dlopen(\"libQt6QuickWidgets.so.6\", RTLD_NOW | RTLD_GLOBAL);\n  dlopen(\"libqmlui.so\", RTLD_NOW | RTLD_GLOBAL);\n  #endif\n```\n\n\u003c/details\u003e\n\n\n## Legal notice\n\nThis software uses the [Qt library](https://www.qt.io/).\nQt is legally used under the LGPLv3 (GNU Lesser General Public License) version.\nIt is [explicitly stated](https://www.qt.io/licensing/open-source-lgpl-obligations)\nthat Qt Libraries can be used in a commercial closed-source app (if you wish):\n\n\u003e In case of dynamic linking, it is possible, but not mandatory,\nto keep application source code proprietary as long as it is\n“work that uses the library” – typically achieved\nvia dynamic linking of the library.\n\nThese **terms and conditions** allow using (unmodified) Qt as a\nshared library (DLL), in a closed-source project.\n\nQt licensing information (a COPY) is given in a [separate file](/QT_LGPL),\nwhich also can be found on\n[Qt's official web-site](http://doc.qt.io/qt-6/lgpl.html).\n\n---\n\nThe rest of this package is MIT licensed.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnode-3d%2Fdeps-qmlui-raub","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fnode-3d%2Fdeps-qmlui-raub","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fnode-3d%2Fdeps-qmlui-raub/lists"}