The OpenGL has been the de facto 3D graphics standard for more than 20 years. For the newly developed embedded devices including smart phones and tablet PC's, the OpenGL ES (Embedded Systems) 2.0 is the most suitable and the most widely used 3D graphics standard at this time. Since the embedded devices have limited computing powers, programmers met difficulties in the developing OpenGL ES application programs on the embedded systems. They prefer more convenient programming environments of PC's, and thus, we need emulation of the OpenGL ES 2.0 library on PC's. We present our OpenGL ES 2.0 emulation approach, which works on the Linux-based desktop PC's. Although OpenGL ES 2.0 was derived from the desktop OpenGL 2.1, the details of these two graphics standards are different and not mutually compatible. For example, OpenGL ES 2.0 additionally provides the new floating point representation of GLfixed, which consists of a sign bit, 15 bit integer and 16 bit fractional part. The framebuffer object features are also integrated into the core profile of OpenGL ES 2.0, while it was originally an optional extension of the desktop OpenGL. For the shader language supports, OpenGL ES Shader Language (ESSL) 1.0 is more enhanced in its completeness, compared to the original OpenGL Shader Language (GLSL). More specifically, some confusing variable names are fixed, stricter syntax and semantics checks are introduced, and some built-in constants are strengthened to support more enhanced hardware. Thus, we need a more exact and detailed shader language processor. We finally make an ESSL-to-GLSL translator with stricter error check features. Our design focuses can be classified into six categories: function interface design, fixed-point data type support, core pipeline support, shader language support, framebuffer support, and extensions support. We provide totally 11 OpenGL ES extensions, which was selected for their important functionalities. Our final implementation result satisfies 97 % of official conformance tests, and also fully tested with commercial benchmark programs. Its execution speeds are equivalently fast enough in comparison with one of the widely-used commercial OpenGL ES 2.0 emulators. Using our result, programmers can develop OpenGL ES 2.0 programs on their desktop PC's, and simply convert them into final smart phone graphics applications. Our methods can also be applied to other graphics standards such as OpenGL SC and WebGL.
Read full abstract