📄 overview-summary.html
字号:
etc.</li>
<li>
The API <b>must</b> be efficiently implementable on top of OpenGL ES.</li>
<li>
The API <b>must</b> use the native float data type of Java, not introduce
a custom type.</li>
<li>
The API <b>must </b>be efficiently implementable without floating point
hardware.</li>
<li>
The API <b>should</b> be implementable within 150 kB on a real mobile terminal.</li>
<li>
The API <b>must</b> be structured so that garbage collection is minimized.</li>
<li>
The API <b>must</b> be interoperable with related Java APIs, especially
with MIDP.</li>
</ul>
<p>Several applications were identified for the Mobile 3D Graphics API,
including games, map visualization, user interfaces, animated
messages, product visualization, and screen savers. Each of these have
different needs: some require simple content creation, some require
high polygon throughput, yet others require high quality still images
with special effects.
<p>It is clear that such a wide spectrum of different needs cannot be
fulfilled by a scene graph API alone, nor an immediate mode API
alone. It is also clear that having two separate APIs would lead to
developer confusion and sub-optimal usage of precious memory
space. Rather, there must be only one indivisible API, with only one
RI and TCK, that covers both types of access in a unified way. A
developer should be able to use either one, or both at the same time,
depending on the task at hand.
<p>The immediate mode (or low-level) part of the API should be a
subset of OpenGL with no added functionality. That is, the low-level
features should be compatible with OpenGL ES, which is being
standardized by Khronos. For the Reference Implementation, the scene
graph (or high-level) part must be built on top of the low-level
interface, and shall never bypass it when rendering. This ensures that
the scene graph does not include rendering features that cannot be
implemented directly with the low-level interface. The low-level
implementation may then be changed freely, or even accelerated with
dedicated hardware.
<p>In many cases, there is little else to an application than
displaying a scene and playing back some animation created in a 3D
modeling tool. This should not require much Java programming. Even in
more demanding cases, it greatly speeds up development if it is easy
to import objects and animations into a midlet. Therefore, the API
must provide importer functions for different data types, such as
textures, meshes, animations, and scene hierarchies. The data must be
encoded in a binary format for compact storage and transmission.
<p>Most mobile terminals do not have hardware support for floating
point processing. This should be reflected in the API, so that it can
be efficiently implemented using integer arithmetic. However, since
programming with fixed point mathematics is difficult and error prone,
the API should use floating point values wherever feasible, and plain
integers otherwise. Fixed point values must not be used. Also, instead
of introducing a custom Float type or packing floating point values
into integers, Java's built-in float data type must be used. As a
consequence, this API can not be implemented on top of CLDC 1.0.
<p>Like all APIs targeting MIDP, we need to strive for as compact an
implementation as possible. It should be possible to implement the API
in less than 150 kB of ROM space, including the native graphics
engine, Java class files (ROMized), and content importing
facilities. To minimize garbage collection, the API should be
structured so that using it does not require repetitive creation of
objects.
<p>The API must be tightly integrated with MIDP's LCDUI, such that 2D and
3D graphics can be efficiently rendered on the same Canvas or Image, for
example. The decision of whether to use double buffering or not should
be delegated to the MIDP implementation. The API should also be able to
bind with other GUI APIs, such as AWT.
<h3><a name="Literature"></a>Related Literature</h3>
<ul>
<li>
<i>The Java Language Specification</i>, James Gosling, Bill Joy, and
Guy L. Steele, 1996.</li>
<li>
<a href="http://www.magic-software.com/Documentation/Quaternions.pdf">
<i>Quaternion Algebra and Calculus</i></a>, David Eberly, 1999.</li>
<li>
<a href="http://www.magic-software.com/Documentation/KeyframeAnimation.pdf">
<i>Key Frame Interpolation via Splines and Quaternions</i></a>, David
Eberly, 1999.</li>
<li>
<a href="http://java.sun.com/products/cldc/">Connected, Limited Device
Configuration (JSR-30)</a>, Sun Microsystems, Inc.</li>
<li>
<a href="http://jcp.org/en/jsr/detail?id=139">Connected, Limited Device
Configuration 1.1 (JSR-139)</a>, Sun Microsystems, Inc.</li>
<li>
<a href="http://java.sun.com/products/cdc/">Connected Device Configuration
(JSR-36)</a>, Sun Microsystems, Inc.</li>
<li>
<a href="http://java.sun.com/products/midp/">Mobile Information Device
Profile (JSR-37)</a>, Sun Microsystems, Inc.</li>
<li>
<a href="http://jcp.org/jsr/detail/118.jsp">Mobile Information Device
Profile 2.0 (JSR-118)</a>, Sun Microsystems, Inc.</li>
<li>
<a href=
"http://www.opengl.org/developers/documentation/version1_3/glspec13.pdf"
>OpenGL 1.3 Specification</a>, Silicon Graphics, Inc.</li>
<li>
<a href="http://www.w3.org/TR/PNG">PNG file format</a>, World Wide Web
Consortium (W3C).</li>
</ul>
<h3>Expert Group</h3>
The Mobile 3D Graphics API (JSR-184) Expert Group consisted of the
following companies and individuals:
<blockquote>
Nokia (Specification Lead)
<br>Aplix Corporation
<br>ARM
<br>Bandai Networks
<br>Cingular Wireless
<br>Cellon France
<br>France Telecom
<br>Fuetrek
<br>HI Corporation
<br>Hybrid Graphics
<br>In-Fusio
<br>Insignia Solutions
<br>Intel
<br>Intergrafx
<br>MathEngine
<br>Motorola
<br>Research In Motion
<br>Siemens
<br>Sony Ericsson Mobile Communications
<br>Sun Microsystems, Inc.
<br>Superscape
<br>Symbian
<br>Texas Instruments Inc.
<br>3d4W
<br>Vodafone
<br>Zucotto Wireless
<br>Fredrik Kekalainen (Fathammer)
<br>Mika Tammenkoski (Sumea)
</blockquote>
<h3>Revision History</h3>
<table BORDER CELLPADDING=3 class="Table" >
<tr>
<th>
<div class="TableHead">Date</div>
</th>
<th>
<div class="TableHead">Version</div>
</th>
<th>
<div class="TableHead">Description</div>
</th>
</tr>
<tr>
<td>
<div class="TableText">11-Sept-2002</div>
</td>
<td>
<div class="TableText">EG Draft 1</div>
</td>
<td>
<div class="TableText">Based on the 2nd Expert Group meeting</div>
</td>
</tr>
<tr>
<td>
<div class="TableText">20-Sept-2002</div>
</td>
<td>
<div class="TableText">EG Draft 2</div>
</td>
<td></td>
</tr>
<tr>
<td>
<div class="TableText">31-Oct-2002</div>
</td>
<td>
<div class="TableText">EG Draft 3</div>
</td>
<td>
<div class="TableText">For review in the 3rd EG meeting</div>
</td>
</tr>
<tr>
<td>
<div class="TableText">15-Nov-2002</div>
</td>
<td>
<div class="TableText">EG Draft 4</div>
</td>
<td>
<div class="TableText">Based on the 3rd EG meeting</div>
</td>
</tr>
<tr>
<td>
<div class="TableText">29-Nov-2002</div>
</td>
<td>
<div class="TableText">EG Draft 5</div>
</td>
<td></td>
</tr>
<tr>
<td>
<div class="TableText">17-Dec-2002</div>
</td>
<td>
<div class="TableText">EG Draft 6</div>
</td>
<td></td>
</tr>
<tr>
<td>
<div class="TableText">16-Jan-2003</div>
</td>
<td>
<div class="TableText">EG Draft 7</div>
</td>
<td>
<div class="TableText">For review in the 4th EG meeting</div>
</td>
</tr>
<tr>
<td>31-Jan-2003</td>
<td>EG Draft 8</td>
<td>Updated as per EG meeting resolutions.</td>
</tr>
<tr>
<td>14-Feb-2003</td>
<td>EG Draft 9</td>
<td>First Community Review candidate.</td>
</tr>
<tr>
<td>19-Feb-2003</td>
<td>EG Draft 10</td>
<td>Community Review specification.</td>
</tr>
<tr>
<td>11-Apr-2003</td>
<td>EG Draft 11</td>
<td>Updated according to Community Review feedback.</td>
</tr>
<tr>
<td>30-Apr-2003</td>
<td>EG Draft 12</td>
<td>Public Review specification.</td>
</tr>
<tr>
<td>6-Jun-2003</td>
<td>EG Draft 13</td>
<td>Updated according to Public Review feedback.</td>
</tr>
<tr>
<td>9-Jul-2003</td>
<td>EG Draft 14</td>
<td>Proposed Final Draft Candidate.</td>
</tr>
<tr>
<td>11-Jul-2003</td>
<td>EG Draft 15</td>
<td>Proposed Final Draft.</td>
</tr>
<tr>
<td>12-Sep-2003</td>
<td>EG Draft 16</td>
<td>Proposed Final Draft 2.</td>
</tr>
<tr>
<td>26-Sep-2003</td>
<td>EG Draft 17</td>
<td>Proposed Final Draft 3.</td>
</tr>
<tr>
<td>15-Oct-2003</td>
<td>Final Draft</td>
<td>Submitted to JCP PMO.</td>
</tr>
<tr>
<td>19-Nov-2003</td>
<td>Version 1.0</td>
<td>Final Release.</td>
</tr>
</table>
<P>
<P>
<HR>
<!-- ========== START OF NAVBAR ========== -->
<A NAME="navbar_bottom"><!-- --></A><TABLE BORDER="0" WIDTH="100%" CELLPADDING="1" CELLSPACING="0">
<TR>
<TD COLSPAN=3 BGCOLOR="#EEEEFF" CLASS="NavBarCell1">
<A NAME="navbar_bottom_firstrow"><!-- --></A><TABLE BORDER="0" CELLPADDING="0" CELLSPACING="3">
<TR ALIGN="center" VALIGN="top">
<TD BGCOLOR="#FFFFFF" CLASS="NavBarCell1Rev"> <FONT CLASS="NavBarFont1Rev"><B>Overview</B></FONT> </TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <FONT CLASS="NavBarFont1">Package</FONT> </TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <FONT CLASS="NavBarFont1">Class</FONT> </TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <FONT CLASS="NavBarFont1">Use</FONT> </TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="javax/microedition/m3g/package-tree.html"><FONT CLASS="NavBarFont1"><B>Tree</B></FONT></A> </TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="deprecated-list.html"><FONT CLASS="NavBarFont1"><B>Deprecated</B></FONT></A> </TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="index-files/index-1.html"><FONT CLASS="NavBarFont1"><B>Index</B></FONT></A> </TD>
<TD BGCOLOR="#EEEEFF" CLASS="NavBarCell1"> <A HREF="help-doc.html"><FONT CLASS="NavBarFont1"><B>Help</B></FONT></A> </TD>
</TR>
</TABLE>
</TD>
<TD ALIGN="right" VALIGN="top" ROWSPAN=3><EM>
<EM><B>Nov 19, 2003</B></EM></EM>
</TD>
</TR>
<TR>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
PREV
NEXT</FONT></TD>
<TD BGCOLOR="white" CLASS="NavBarCell2"><FONT SIZE="-2">
<A HREF="index.html" TARGET="_top"><B>FRAMES</B></A>
<A HREF="overview-summary.html" TARGET="_top"><B>NO FRAMES</B></A>
<SCRIPT> <!-- if(window==top) { document.writeln('<A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A>'); } //--></SCRIPT><NOSCRIPT><A HREF="allclasses-noframe.html" TARGET=""><B>All Classes</B></A></NOSCRIPT></FONT></TD>
</TR>
</TABLE>
<!-- =========== END OF NAVBAR =========== -->
<HR>
<EM>Copyright © 2003 Nokia Corporation. See the <a href="./overview-summary.html#Copyright">Copyright Notice</a> for details.</EM>
</BODY>
</HTML>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -