3D graphics engine for embedded Linux without Android - android

I am facing a task to introduce some custom yet to be written written 3D games into our embedded Linux board. Our system is a custom Linux distribution. Main application is running with Qt and the plan is for this application to run games as separate processes that will overtake the screen while active. The board is capable of OpenGL ES2 and is on par with modern phones.
What are my options for a good, performant 3D graphics engine on such a platform?
Preferably I would love to have Unity3D, but it only supports Android. (Maybe there is a possibility to skip Android by providing only basic dependencies instead?)

Have a look at www.inka3d.com. The same engine also works on embedded linux with some more features (e.g. clip libraries of Maya can be used). Currently it works on BeagleBoard even with character animation at 30 fps and 1024x768.

Since you've decided on Qt for your UI, you definitely want a graphics library that's compatible with Qt.
So it sounds like OpenGL ES is exactly what you're looking for:
http://doc.qt.nokia.com/stable/qt-embeddedlinux-opengl.html
Qt for Embedded Linux provides support for integrating OpenGL ES for
drawing into a QGLWidget. The current implementation supports OpenGL
and 2D painting within a QGLWidget.
Q: Exactly what's holding you back (you didn't specify the exact board or any details about your toolchain/library vendors)?
PS:
You might also wish to look here:
http://doc.qt.nokia.com/stable/qt-embeddedlinux-opengl.html
The reference integration for OpenGL into Qt for Embedded Linux is for
the PowerVR chipset from Imagination Technologies. It consists of
two components: pvreglscreen, which provides the Qt for Embedded Linux
screen driver, and QWSWSEGL, which implements a plug-in to the PowerVR
EGL implementation to implement low-level OpenGL drawing surfaces.
PPS:
This is a great, great book on Linux Embedded: satisfaction guaranteed:
Embedded Linux Primer, Christopher Hallinan:
http://www.amazon.com/Embedded-Linux-Primer-Practical-Real-World/dp/0137017839/

Related

Loading 3D objects and textures for OpenGL ES rendering

I have some 3D objects stored in 3D editor application specific (Blender/Solid/3DS) file format exported to OBJ+MTL files with optional textures in PNG/JPG files.
I would like to load these objects in OpenGL ES application on mobile phone (today for Android and in the near future for iOS too). And I don't want to write my own OBJ+MTL (or any other 3D format) parser. So I would like to use some 3D engine with support for loading 3D models (from OBJ+MTL or exported to 3D engine specific header/resource files from within my 3D editor) to achieve this.
I have some experience with Min3D framework, but it's a bit buggy at loading the files (also won't load material colors, only texture images), doesn't support OpenGL ES 2.0, and Obviously doesn't run on iOS.
I've seen the popular blender export script for C header files (http://iphonedevelopment.blogspot.com/2009/06/using-3d-models-from-blender-in-opengl.html) but I believe it doesn't support material color export (when texture image is not used).
Lately I've started to look at Unity 3D, but it seems to be a lot more than I need. I would need to pay for the features I won't be using (animation, game specific features, etc.) and also I'll need to integrate it with other parts of my mobile application.
What 3D engine/framework would you recommend ?
To summarize the requirements:
Ability to load 3D models + textures from OBJ+MTL(+PNG/JPG) or exported from 3D editor application (using plugin ?), with support for colored materials without textures
Supports Android (additional iOS support is very welcome)
Supports OpenGL ES 2.0
Free / Cheap
Easy integration with native code (Java is preferred for Android)
OpenSceneGraph supports loads of model types. I haven't tried to build any mobile apps with it, but there's a lot of chatter and some tutorials on the forums/mailing list about doing it, for both iOS and Android. Open Source.
http://www.openscenegraph.com
http://forum.openscenegraph.org/viewtopic.php?t=10076
EDIT: as a side note, if all you want to do is view your models, and you don't mind storing them in the cloud, you can just upload them to SketchFab:
http://sketchfab.com/faq
And view with Firefox mobile. iOS support would come whenever iOS browsers support full webGL.
They're using osg behind the scenes to read models, and I think OSGjs for front-end.

What programming language works well with OpenGL ES on iOS and Android?

What programming language works well with OpenGL ES on iOS and Android?
I am specifically looking to get graphics experience with OpenGL ES 2. My experience has been with web development in Javascript and iOS development using C# and Unity3D. (Unity3D is great but far removed from dealing directly with OpenGL ES.)
The short answer is there probably is none. That's why tools like Unity exist. Making things work between iOS and Android is a huge difficult task. If all you need is OpenGL ES experience, why not try it on just one platform? Both Android and iOS can make calls to Open GL ES, but Android does it in Java while iOS does it in C.
If you like C# you should look into MonoTouch. It brings great C# experience to iOS. And it provides you with direct access to OpenGL ES API.

Multiple mobile platform game development (Android/iOS)

I'm currently developing a small indie game for the Android framework, however in order to save my some future work - I was wondering, is there a way to develop a game for the Android and iOS at the same time?
I'm aware of HTML 5 solutions, but I'm unsure if you can use them in order to develop games.
My requirements:
* 2D Graphics with animations
* Play sounds (music/sfx)
* Touch gestures (click, drag, pinch, etc)
Any suggestions?
Check out Corona SDK. They offer exactly what you are looking for - 2D graphics, animations, physics engine, touch, sounds; and they offer it as a cross-platform solution for both iOS and Android. The engine is OpenGL based, and they use Lua as a language.
The main drawback is that it costs $200 per platform, or $350 if you want support for both. However, you need the subscription only when you actually get to publishing your game; you can use it for free locally to build for your own device.
You may also want to check Gideros Studio, which includes
Box2D physics engine
OpenAL sound system
Plugins (native code support)
Instant testing on the phone (no compile needed)
Tweening
Movieclips
Sprites & sprite sheets
Analytics
Ad support
Using Gideros Studio is free, and you can develop for both Android and iOS at the same time with native (OpenGL rendered) functions.
I suggest writing your main game engine code in C++ because Android supports that with the NDK:
http://developer.android.com/sdk/ndk/overview.html
And iPhone has Objective-C++ which is explained pretty well here:
How well is Objective-C++ supported?
You're fortunate enough that both platforms use OpenGL ES, so not much will be required to port that over.
The only differences at this point will be sound, touching, file management, etc. (anything in the APIs).

iOS OpenGL ES compatible with Android OpenGL ES?

In theory, can I write a game for iOS in openGL ES and expect to easily port it to Android? How about from Android to iOS?
There are differences in Android and iOS game development that you need to take into account:
In android you need to support multiple graphics chips:
Different texture compression support
Major differences in performance
Different OpenGL ES implementations:
Buggy gluUnproject implementation in Android (there are custom implementations, for example )
Lack of glGet* functions in Android (however you can use MatrixTrackingGL)
Yes, I believe that if you write a game in C/C++ for iOS, to port it to Android wouldn't be too much of a hassle. However, if you write the game in Objective-C, then it could be quite a hassle indeed.

Getting started with OpenGL... in Android

I'm an experienced Android developer (if such thing exists) who has never worked with OpenGL before.
There are various advantages of the Android platform (open-source, open distribution, portable, and so on) that make me think that it might be a great environment to finally get into OpenGL.
But I'm also worried that the complexity of working in a environment with limited resources might be too much for someone who has never worked with 3D graphics before. Also, it seems that Android only uses a subset of OpenGL, and I don't know how this will affect my learning experience.
What do you think? Is Android OpenGL development newcomer-friendly, or for experienced OpenGL developers only?
There's not really an "Android OpenGL", it's just OpenGL ES 1.1 or OpenGL ES 2.0, which IS a subset of OpenGL, but oriented to mobile and embedded devices.
I don't think any platform is "newcomer-friendly", is just that you need to get the necessary knowledge to use it. For OpenGL/OpenGL ES, you need to have certain computer graphics knowledge before trying to use it. GL ES and GL are very similar and GL ES knowledge also works in GL (not viceversa, since it's a subset), so just get into it.
I recommend the book OpenGL ES 2.0 Programming Guide (for GL ES 2.0) and the book OpenGL ES Game Development for OpenGL ES 1.1. These books are in C, you need to "port" them to Java, since Android uses that, but the basics are the same.

Categories

Resources