Uno-Platform: OpenGL in cross platform app - uno-platform

Does anyone know if there is a way to embed an OpenGL view in an Uno-Platform app? I need it to work across iOS, macOS, Android and UWP. I have a lot of C# / Xamarin code I'd like to reuse.

There is no universal implementation of OpenGL for all platforms. Some does not support it at all...
Android: You may use the Android.Opengl namespace
iOS: You may use GLKit
macOS: You may use NSOpenGLView BUT IT IS DEPRECATED (Apple is suggestion to use MetalKit instead)
Wasm: You need to use WebGL, a subset of OpenGL.
Windows: A popular way is to use GTK3
Linux: A popular way is to use GTK3
Right now, the only universal API available for graphic rendering with Uno Platform is SKIA. I don't know if it suits your case, but here's a Uno sample running SKIA on multiple platforms: https://github.com/unoplatform/Uno.Samples/tree/master/UI/SkiaSharpTest

Related

Availability of Playn support libraries and engines

This slide in a recent playn presentation shows clearly the differentiation between playn Core API, and third party libs and engines. I wish to re-implement as little as possible, is there an obvious method to source these libs and engines that will combine with playn?
The playn-jbox2d.jar used in the showcase, I assume this a specific build of the java box 2d lib for playn? Will similar manual porting be required for other libraries or can e.g. Android libs be easily reused?
PlayN is a completely different API than Android, so you cannot use an Android game development library with PlayN. Higher level libraries are already being written for PlayN (for example, http://github.com/threerings/flashbang-playn), but since the platform is relatively new, not as many such libraries exist as for Android directly.
You have to realize that while you write in java that is used by all platforms, the method of how that java is compiled to the different platform is widely different (Android SDK for Android, GWT for html etc). If you have a library that uses only a subset of java that is supported on each compilation path for evey platform you should be able to use it out of the box but this is not very likely.

Will a Qt based GUI app work on the Android OS?

If I write a Qt Gui application in c++, will it work on the Android OS?
You might be interested in this video: http://labs.qt.nokia.com/2011/02/28/necessitas/
So, yes, it is possible. Personally I would recommend always using the native platform where possible - chances are it's going to be more stable across all the various Android devices.

Integrating platform-specific API's in multiplatform mobile app (Flex / Titanium)

My team is in the planning phase of a multiplatform mobile app. We're considering Adobe Air/Flex or Appcelerator Titanium instead of native development, but will eventually be needing to use an external API that is ported to iOS and Android. **(one that harnesses the device's camera)
The idea would be to use platform detection and overloaded classes to determine which platform version of the API to import. Is something like this possible in either Adobe or Appcelerator? If so, would the native Objective-C or Java need to somehow be wrapped in Actionscript (if Adobe) or JavaScript (if Titanium)?
Any advice would be fantastic.
A near-term (no dates yet) release of Mobile Air will include native extensions. The native code will be written in the platforms' native languages. ActionScript interfaces will exist to interact with these extensions, the specifications for which have not yet been released.
http://active.tutsplus.com/articles/news/industry-news-week-22-2011/
Titanium is 100% native code.
How Does Appcelerator Titanium Mobile Work?

Qt for Symbian VS. Qt for MeeGo

What is the difference between Qt for Symbian and Qt for MeeGo? I know Qt is a cross-compiling platform. Does this mean that if I use a library from Qt the exact same library works on all devices which support Qt (e.g. Symbian, MeeGo)?
For example:
QtDesktopServices can launch a web browser. Despite the name 'Desktop' is confusing for mobile devices can I launch a web browser on every device which supports Qt? If I look at MeeGo, MeeGo is used for different kind of devices e.g. In-Vehicle, TV, media phone
Is it guaranteed that every device has a web browser on it? I don't think so and that's why I'm asking. If a browser is guaranteed, which browser is it? Which features does it have? I know there is WRT, but a user here stated that WRT has discontinued. So what now?
Do I have to choose between Qt 4.7 and Qt Mobility 1.0?
What leinir said - Qt Mobility is a module that implements common features for mobile devices. Qt's API is the same on all platforms, though there are some platform-specific functions (mainly dealing with low-level stuff).
While the API (the interface) is the same, the implementation of course may be different. I suggest looking at the Qt online documentation - the pages linked under "Platform-specific Development"
According to "Platform notes - Symbian", the Symbian port is not complete and lacks some features (e.g. OpenGL support is "planned for a future release", while printing probably never will be supported). I'm pretty sure that the MeeGo/Maemo version supports OpenGL ES, as I've seen a Qt-based application using it (Stellarium on a Nokia N900).
QtMobility is an extra module for Qt, which provides a bunch of extra functionality which is more esoteric than the other 13 or so Qt modules, but functionality which is really useful when you are building applications the way you suggest.
So no, you don't choose between Qt 4.7 and QtMobility 1.0, because you have to use Qt to be able to use the extra module QtMobility :)
The browser will always be whatever is set up as the default browser on the system. So, no, there is no guarantees - for Windows, for example, you might have people using Firefox, Chrome, Internet Explorer 6 and many others. This is the nature of platform integration, i'm afraid :)

Which platform for mobile development?

I have to develop an application which requires Bluetooth and profile change functionality for Symbian phones. After spending sometime I found that following options:
Java: but java does not allow to change profile
Symbian C++: I read basics for Symbian C++ and created some basic stuffs. Symbian extended APIs provide simple APIs for Profile and Bluetooth (I haven't tested yet). But its required lot of efforts to grab these. Specially certificate singing problem. I want to test my application on different devices and wish to give my friends whom having different cellphones. But couldn't due to signing problem.
QT: I am still confused on this. Whether this platform capable to fulfill my requirement or not. Secondly which phone supports QT or not...
Honestly, I am bit frustrated while writing this. I am looking someone, experience in these matter, to guide me in this situation.
You can combine native C++ with Qt. Though you'll lose some of the cross-platform nature of Qt by mixing native C++ with it.
See the XQProfile example on Forum Nokia Wiki for mixing Qt and native Symbian C++ for profile changing.
Qt can be installed to practically all devices from S60 3rd Edition FP1 (S60 3.1) onwards. Newer device models ship with Qt preinstalled. Forum Nokia has device specifications that you can filter based on Qt availability.
QT (+ QML) is the language of choice going forward. I believe it is currently on the following phones: N8,C7,C6,E7. i version 4.6.1 with version 4.7 which has the QML support due shortly.
However if you need to target current and older devices then your only choice is Symbian C++.

Resources