opengl.jd revision 9066cfe9886ac131c34d59ed0e2d287b0e3c0087
19066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectpage.title=3D with OpenGL
29066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectparent.title=2D and 3D Graphics
39066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectparent.link=index.html
49066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project@jd:body
59066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
69066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
79066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project<p>Android includes support for high performance 3D graphics 
89066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectvia the OpenGL API &mdash; specifically, the OpenGL ES API.</p>
99066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project<p>OpenGL ES is a flavor of the OpenGL specification intended for embedded
119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectdevices. Versions of <a href="http://www.khronos.org/opengles/">OpenGL ES</a> are loosely peered to versions of the primary
129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectOpenGL standard. Android currently supports OpenGL ES 1.0, which corresponds
139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectto OpenGL 1.3. So, if the application you have in mind is possible with OpenGL
149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project1.3 on a desktop system, it should be possible on Android.</p>
159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project<p>The specific API provided by Android is similar to the J2ME JSR239 OpenGL
179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectES API. However, it may not be identical, so watch out for deviations.</p>
189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project<h2>Using the API</h2>
209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project<p>Here's how to use the API at an extremely high level:</p>
229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project<ol>
249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project<li>Write a custom View subclass.</li>
259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project<li>Obtain a handle to an OpenGLContext, which provides access to the OpenGL functionality.</li>
269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project<li>In your View's onDraw() method, get a handle to a GL object, and use its methods to perform GL operations.</li>
279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project</ol>
289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project<p>For an example of this usage model (based on the classic GL ColorCube),
309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectsee
319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project<a href="{@docRoot}guide/samples/ApiDemos/src/com/example/android/apis/graphics/GLSurfaceView.html">com.android.samples.graphics.GLSurfaceView.java</a>
329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectin the ApiDemos sample code project. A slightly more sophisticated version showing how to use
339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectit with threads can be found in 
349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project<a href="{@docRoot}guide/samples/ApiDemos/src/com/example/android/apis/graphics/GLSurfaceViewActivity.html">com.android.samples.graphics.GLSurfaceViewActivity.java</a>.
359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project</p>
369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project<p>Writing a summary of how to actually write 3D applications using OpenGL is
389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectbeyond the scope of this text and is left as an exercise for the reader.</p>
399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project<h2>Links to Additional Information</h2>
419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project<p>Information about OpenGL ES can be
439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectfound at <a title="http://www.khronos.org/opengles/"
449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projecthref="http://www.khronos.org/opengles/">http://www.khronos.org/opengles/</a>.</p> 
459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project<p>Information specifically
479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectabout OpenGL ES 1.0 (including a detailed specification) can be found
489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectat <a title="http://www.khronos.org/opengles/1_X/"
499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projecthref="http://www.khronos.org/opengles/1_X/">http://www.khronos.org/opengles/1_X/</a>.</p>
509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project<p>The documentation for the Android {@link javax.microedition.khronos.opengles
529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectOpenGL ES implementations} are also available.</p>
539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project<p>Finally, note that though Android does include some basic support for
559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectOpenGL ES 1.1, the support is <strong>not complete</strong>, and should not be relied
569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectupon at this time.</p>
57