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 — 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