Best OpenGL ES version for beginners - android

After doing android programming for over a year, I think it's time to notch up things a little bit and what is a better way than OpenGl.
I would like to know which version of OpenGL ES should I learn, as I am a complete beginner.

I just started to learn Open GLES on Android (with no experience of Open GL before). I wasn't that interested in learning Open GLES, just getting my graphics to work (to set up a coordinate system and to draw images on it).
I read that it would be easier to learn GLES10 than to learn GLES20, so I went with GLES10. However, drawing an image in Open GL turned out to be a much more complex operation than I expected, and I thought that if I were going to learn all this, I might just as well learn GLES20, so I changed to that instead.
There aren't that many simple tutorials showing you how to draw images in Open GLES. Android's tutorial is quite bad. The code they show on the page is not the same as the code in the "Download the sample" link, the author of the tutorial seem to have made some mistakes, and it doesn't show you how to draw an image. Instead I would recommend this tutorial, although it's not as good as what I was looking for.
I know that my text doesn't answer your question, but I'm just sharing my thoughts in case you find them useful.

Your question should be closed since the answer to it would be completely subjective. Where it comes to the ES version there is no "better", only "better for your needs". I suggest you pick either ES1 or ES2.
There is a huge difference between the ES1 and the ES2 where the ES1 is still using a fixed pipeline and the ES2 is not. What that means is you will have to learn shaders in order to use ES2 and a lot of very handy tools such as a matrix stack are removed in ES2 due to the shaders. There are other libraries replacing those functionality but you still do need to understand them a bit more then in fixed pipeline.
So the ES1 is probably much easier for a beginner since you can have a nice drawing in a very short time but you will want to migrate to higher versions as quick as possible at which point most of the ES1 stuff will be useless to you. The ES2 can be a real pain to begin with and once you understand how things work you have quite a lot of power working with it, still that might take quite some time.
Also most of the current topics considering the openGL and the Android are targeting the ES2 version which means you will have most updated sources around the web.
Still in the end the choice is yours. I know I have not given you the answer but still I hope this helps you understand a bit what you are working with.

Related

What do I have to learn or should use in creating a 3D android game?

My thesis is to create an 3D android game. I have installed the 3D softwares like 3DS Max, ZBrush, Blender. I also downloaded Android SDK for Windows and I have Eclipse Juno. But I don't know how to start. Thank you in advance. :)
If you want to write a game, use a game engine.
I would advice against using OpenGL directly if you want to focus
on game mechanics or story. 3D game engines like
Unity or JMonkeyEngine
give you all the tools you need to turn your 3D assets into a game:
Importers for various file formats, a scene graph,
math libraries, and usually tons of example projects that get you
started quickly.
If you want to write a rendering engine, use OpenGL
With OpenGL you can build everything mentioned above yourself: Write
or find importers for your assets, figure out a lighting model, write
a scene graph. If you want to do all that, cool, use OpenGL. But
doing this technical stuff will keep you busy; you will have less time
to make a really great game.
I prefer OpenGL ES for Android. Good performance and easy enough to learn.
It's better to start from basic with opengl and then understand concept of using 3d and then prefer standard tool to use.
I have listed android game engine tool for 2d and 3d. Hope it might help u.
https://stackoverflow.com/questions/17163446/what-is-the-best-2d-game-engine-for-android/17166794#17166794
Start with unity3d which is a game engine, I am not sure but the names that you have posted are used for making 3d models for the game.
Your Thesis? That's pretty broad scope! :)
What I would be looking for, is something with lots of example code (since you say you don't know where to start) and good community involvement (ditto the start thing).
If you only need a single player setting, then I would suggest libGDX as a place that would be a good jumping off platform, as there are lots and lots of step thru tutorials along with lots of example code (and a very up to date wiki on the API), and a pretty good group at helping out with issues.
Since it is open source, you can dig as deep as you want into the inner workings to understand (or be mystified like me) as to how the code is accomplishing whatever task you are looking at. (which might be handy for your thesis)
While it might not be quite as polished as some other commercial 3d development kits, the BadLogic crew has made some very big progress the past few months on the 3d side of the house, along with breaking my JSON code... thanks! :) )

canvas or OpenGL ES?

I am embarking on a project (game) and I have a question about the implementation, will be developed specifically for Android and want to know which is better (easier, faster to develop and portable). canvas or OpenGL ES
Unless you already have a good working knowledge of OpenGL, then using a Canvas will be easier and faster. In terms of portability it really isn't as clear cut.
That said you should probably consider using one the pre-existing game engines, if you really only about Android then you should check out http://www.andengine.org/ its a great engine with a strong community and lots of great little example games.
Actually I'm not really sure where I read this,but when it's about developing game if you have any knowledge of OpenGL, you better use that,because the system is separating more space for your application so it can run without lagging or crash.So you can't get an Memory Full error. (Please correct me if I'm wrong.)

Page Curl Animation on Android with OpenGL-ES

I want to achieve a nice 3D page curl animation in Android. I read some articles and found that nice effect can be achieved by OpenGL-ES so I started to learn OpenGL-ES (I did some of tutorials of OpenGL-ES and am still continuing) but I found it too complex for me to achieve this functionality. Also I got some examples which are available on StackOverflow and on the net, they work but I am not able to understand it, can someone guide me to achieve this functionality?
Based on the question comments I have an answer to this question.
YES, you can do that with OpenGL, BUT you need a deep understanding of math and graphics. This is a lot to learn, this will cost you at least a couple of weeks and it's definitely a hard path to go if you do it only because of this single animation (all of this applies if you don't take code which you probably won't understand and another human being put his whole effort into).
Nevertheless there might a ready to use implementation but unfortunately I can't present you one because I don't know if there's any out there.
Update
You callenged me, so I was eger to know whether there is something out there (because I saw that before and couldn't believe that there isn't a project out there which already does that for you).
And actually I found this question which seems to address the very same issue. And yes, there's someone who published his results here. And I have to admit: I looks awesome. It's also a pure java implementation.
But still: Having some background knowledge about OpenGL would enhance your whole attitude as developer. I'm not saying it's a must because not every one will succeed in OpenGL programming because it's quite hard to learn and implies a lot of math. But I think it's worth it because you will gain some deep understanding of current and all future graphical interfaces.

Basic OpenGLES tutorials in C++ for android?

I am trying to find some very basic tutorials like how to draw a line, how to draw a triangle, how to draw a rectangle etc using OpenGLES in android. All the tutorials I found are in Java but I am looking for C++ based samples. I'll be very thankful if someone can point me to such tutorials.
Update
I am creating activity and renderer in Java but I want to implement/redirect methods like OnDrawFrame, OnSurfaceChanged and OnSurfaceCreated in/to C++.
I would advise to first learn OpenGL (2.0+) on the desktop and then move to OpenGL|ES. As a beginner you are bound to make mistakes and it will be easier to find, fix and learn from them as well the theory and requirements of 3D rendering. When you have a firm grasp you could make the jump instantly into OGL|ES with just the reference pages at hand.
For a crash course though, this book and that have proven quite useful.
Actually this question is asked earlier..
OpenGL on Android using C++ only
may be its useful for you..
But the correct approach is first learn opengl because opengles is like a subset of opengl.
here a link for a good book http://www.amazon.com/OpenGL-SuperBible-Comprehensive-Tutorial-Reference/dp/0321712617/ref=sr_1_2?s=books&ie=UTF8&qid=1318312610&sr=1-2

Skia and Android Paint drawing objects and their use or documentation

Does anyone know of good documentation for the Skia drawing library used by Android?
The main Canvas object has hardly any state, so I'm thinking especially of the objects you can embed into the Paint object. I've worked out by trial and error how to use some ColorFilters and made a cool effect with ColorMatrixColorFilter. Now I have the drop shadows I want from the LinearGradient shader also. I think I understand PathEffects and have some ideas about XferModes. MaskFilters and Rasterizers are still utterly opaque to me. But trial and error is not a good way to understand a complicated library.
Mostly I'm concerned that the Android docs don't discuss 2d graphics and the means of using them at all. Even the class javadocs often don't explain what the class is doing. The actual function is all in Skia C code, which I can get, but it also lacks documentation. I've seen some cool demos but Google explained little about how they were done.
Is the only way to understand these things experimentation and reading the C code? What about efficiency and best practices? The Davlik/Android VM is sensitive to memory allocations and sometimes slow and I'm concerned that I'm not doing things the best way.
Skia has its own google code project site where you could find some high level overview.
Inline documents could be browse by this link in the project site
http://skia.googlecode.com/svn/trunk/docs/html/hierarchy.html
And you could join the discussion mail list. Designers and community will answer questions.
Another good reference is surprising from Apple. Apple QuickDraw GX documentations explained a lot of 2D vector graphics concepts and could apply to Skia well enough.
Android canvas API did have two difference implementation, one is Skia and another is OpenGL ES. The later implementation is so-called HWUI.
Regardless of the implementation, understanding the pipeline underlying the draw process is critical to understand how to use the canvas API.
Below are the best doc available so far describing the pipeline. You will definitely find it useful.
http://www.xenomachina.com/2011/05/androids-2d-canvas-rendering-pipeline.html

Categories

Resources