I started to learn OpenGL ES for Android and i have some problems.
I see different tutorials on the internet and i’m confused.There are some tutorials with shaders and without shaders but they are about same subject.What is a shader actually and are we have to use it?
Which OpenGl version is suitable for creating a game like Racing Moto or any 3D game?
What shaders are, essentially, are programs built for and executed by the GPU. In game programming they usually take in input from the CPU in the form of buffer data that represents the 3D geometry in your games. There are also general purpose GPU (GPGPU) programs that don’t necessarily take 3D data for input but those are on a different scope of programming.
I am not too experienced with the OpenGL ES but for mobile platforms and other more restrictive hardware, it is acceptable not use shader and simply use the fixed function pipeline. Shaders are something that you don’t need to get into right away if you’re a beginner in programming graphics, but it’s a good idea to pick it up soon. OpenGL ES is a more condensed version of OpenGL.
As stated by wolfgang, OpenGL ES 2.0 requires that you use shaders because fixed function pipelines are becoming deprecated and left to older, slower hardware.
That said, the limitations of OpenGL and OpenGL ES ultimately come from the hardware you use. Some phones are capable of higher pixel fill rates than others, some hardware is capable of drawing to multiple frame buffer objects (a more advanced feature) and some aren’t. OpenGL does’t give you these features internally- it merely exposes that functionality to the programmer if the hardware has it.