The Mobile 3D Graphics API, commonly referred to as M3G, is a specification defining an API for writing Java programs that produce 3D computer graphics. It extends the capabilities of the Java Platform, Micro Edition, a version of the Java platform tailored for embedded devices such as mobile phones and PDAs. The object-oriented interface consists of 30 classes that can be used to draw complex animated three-dimensional scenes. M3G was developed under the Java Community Process as JSR 184. As of 2006, the current version of M3G is 1.1.
Goals of M3G Edit
M3G was designed to meet the specific needs of mobile devices, which are constrained in terms of memory, memory bandwidth, and processing power, and which often lack an FPU and graphics acceleration hardware such as a GPU. The API's architecture allows it to be implemented completely in software or to take advantage of any acceleration hardware present on the device.
M3G is not Java 3D Edit
M3G should not be mistaken for Java 3D, which extends the capabilities of the standard Java platform. Java 3D is designed for PCs that have more memory and greater processing power than mobile devices. M3G and Java 3D are two separate and incompatible APIs designed for different purposes.
Immediate and Retained Modes Edit
M3G provides two ways for developers to draw 3D graphics: immediate mode and retained mode. In immediate mode, graphics commands are issued directly into the graphics pipeline and the rendering engine executes them immediately. When using this method, the developer must write code that specifically tells the rendering engine what to draw for each animation frame.
Retained mode uses a scene graph that links all geometric objects in the 3D world in a tree structure. Higher-level information about each object — such as its geometric structure, position, and appearance — is retained from frame to frame.
Other Features Edit
The M3G standard also specifies a file format for 3D model data, including animation data. This allows developers to create content on PCs that can be loaded by M3G on mobile devices.
- JSR 184 (Mobile 3D Graphics API for J2ME 1.0, 1.1)
- Getting Started With the Mobile 3D Graphics API for J2ME
- JSR 239 (Java Bindings for OpenGL Embedded Subset) - related Java ME graphics specification