Series: OpenGL ES Precursor – Not Difficult, Different! (Part 5)

This is the final item in a series of short posts about OpenGL ES. The series investigates OpenGL ES as a series of concepts and is aimed at those who are in the early stages of learning the language. I have spoken to many people who have complained that OpenGL ES is difficult to learn. I think that the previous installments in this series show that OpenGL ES is not difficult, just different, and with very good reason.

OpenGL ES is an extremely efficient fully-functioning section of an open standard C API. This gives it particular characteristics. These include C based naming conventions. Unlike the desktop version and most open standards, OpenGL ES has distinct versions that are not subsets of each other. This is necessary to fulfill it’s mobile brief. Checking the API version used for tutorials is therefore critical.
Continue reading

Series: OpenGL ES Precursor – Terminology (Part 4)

In this series I will describe some of the basic concepts of OpenGL ES. In the previous installment I examined OpenGL as a state machine. I mentioned that there is a mathematical scene description. This update will list some of the key features of that description. It is a condensed list of keywords you should investigate and understand. It will help to explain some of the core terminology used in OpenGL ES tutorials.

Scene Object Descriptions

Vertex – A vertex is a point in 3D space. A co-ordinate where x is width, y is height and z is depth. Objects in OpenGL ES is described using vertex arrays, these are lists of vertices.

Draw Mode – This is a setting which describes the rendering of an object from a vertex array or set of vertices. OpenGL ES draws objects exclusively in triangles. Multiple triangles are drawn to create an object. There are various draw modes for creating these lists of triangles. The most common modes are GL_TRIANLGE_STRIP and GL_TRIANGLE_FAN.

Continue reading

Series: OpenGL ES Precursor – OpenGL ES is a ‘State Machine’ (Part 3)

Happy new year! Welcome back, I have had a break over Christmas and now I am trying to get some OpenGL material out while I have some fresh ideas. In this particular series I am describing some of the basic concepts of OpenGL ES, so that it makes the language more accessible. For this, the third installment, I will examine a key phrase that commonly appears when learning OpenGL ES, the ‘state machine’.

In general, a state machine is any device that stores the status of something at a given time. It can operate on input to change the status and possibly cause an action or output to take place for any given input change. It normally has an initial state and a set of possible input events. Additionally, it will normally have a set of new states may result from new input and a set of possible actions or output events that result from a new state.

Continue reading

Series: OpenGL ES Precursor – The Origins and their Legacy (Part 2)

In this series I will describe some of the basic concepts of OpenGL ES so that it makes the finer details of the language more accessible. This second post describes how OpenGL ES originated as a functional language API to target graphics cards and what effect that has had upon it.

During the 1980’s Silicon Graphics were a company that made specialist graphics computers. For that time, they had extremely advanced machines. Programming for these workstations was carried out using procedural languages such as C, BASIC and even assembly language. The IRIS Graphics Language was used to communicate with the graphics cards. Silicon graphics became dominant in this field. They opened up their standard for people to both license and implement hardware. This open standard was named OpenGL and it flourished, unlike Silicon Graphics who collapsed.

As OpenGL grew, many features were added to give it increased power and efficiency. Around 15 years later, in 2006, 3D graphics was beginning to become possible for hand-held devices. An older version of the OpenGL standard was used to assist in this process. All the uncommonly used features were removed from it. In addition, where two or more ways to carried out a task existed, the least efficient ones were scrapped. This new streamline graphics library was dubbed OpenGL for Embedded Systems (OpenGL ES).

Continue reading

Series: OpenGL ES Precursor – Introduction (Part 1)

OpenGL ES is a free, cross-platform API for 2D and 3D graphics on mobile devices, consoles and many more platforms. It is features on both the iPhone and Android devices. It consists of defined subsets of desktop OpenGL. This creates a flexible and powerful, low-level interface between software and graphics acceleration. The picture on the right shows Epic Citadel. This is a free iPhone game developed using OpenGL ES 2.0. It demonstrates the amazing potential of the language.

I have spoken to many people who have attempted to learn OpenGL ES. Many ended up being put off by what they call an unusual API. OpenGL ES can seem disconcerting at a quick look. It uses a slightly different programming paradigm to many other API’s for mobile devices. Often, once people understand the concepts behind OpenGL ES, they find that the can learn it’s nuances at a greatly accelerated rate.

Originally, I intended to write a post as a precursor for those learning OpenGL ES. It expanded to be larger than I had anticipated. Therefore, I am going to write a short series of posts examining OpenGL ES from a variety of conceptual angles. The first of these angles looks at the history of OpenGL ES. All of the posts will be in short bite-sized chunks so that the concepts are easy to digest. They will attempt to give an overview of the structure of OpenGL ES.

The first installment should be ready in the next few days.