opengl.jd revision c918e4a86d42d89cb893b0150358cfd01ef7d532
19066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectpage.title=3D with OpenGL
2c918e4a86d42d89cb893b0150358cfd01ef7d532Scott Mainparent.title=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
296fc27f79b4efb0a8fdaf393eb35fe5925541a893Scott Main<p>For an example of this usage model (based on the classic GL ColorCube), showing how to use
309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectit with threads can be found in 
3122558d0be8210aee1a2ab64b374bb357d4123acdDirk Dougherty<a href="{@docRoot}resources/samples/ApiDemos/src/com/example/android/apis/graphics/GLSurfaceViewActivity.html">com.android.samples.graphics.GLSurfaceViewActivity.java</a>.
329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project</p>
339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project<p>Writing a summary of how to actually write 3D applications using OpenGL is
359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectbeyond the scope of this text and is left as an exercise for the reader.</p>
369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project<h2>Links to Additional Information</h2>
389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project<p>Information about OpenGL ES can be
409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectfound at <a title="http://www.khronos.org/opengles/"
419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projecthref="http://www.khronos.org/opengles/">http://www.khronos.org/opengles/</a>.</p> 
429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project<p>Information specifically
449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectabout OpenGL ES 1.0 (including a detailed specification) can be found
459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectat <a title="http://www.khronos.org/opengles/1_X/"
469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projecthref="http://www.khronos.org/opengles/1_X/">http://www.khronos.org/opengles/1_X/</a>.</p>
479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project<p>The documentation for the Android {@link javax.microedition.khronos.opengles
499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectOpenGL ES implementations} are also available.</p>
509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project
519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project<p>Finally, note that though Android does include some basic support for
529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source ProjectOpenGL ES 1.1, the support is <strong>not complete</strong>, and should not be relied
539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectupon at this time.</p>
54