Home | History | Annotate | Download | only in renderscript
      1 <HTML>
      2 <BODY>
      3 <p>The Renderscript rendering and computational APIs offer a low-level, high performance means of
      4 carrying out mathematical calculations and 3D graphics rendering. An example of Renderscript in
      5 applications include the 3D carousel view that is present in Android 3.0 applications such as the
      6 Books and YouTube applications. This API is intended for developers who are comfortable working with
      7 native code and want to maximize their performance critical applications.</p>
      8 
      9 <p>Renderscript adopts a control and slave architecture where the low-level native code is controlled by the
     10 higher level Android system that runs in the virtual machine (VM). The VM code handles resource
     11 allocation and lifecycle management of the Renderscript enabled application and calls the Renderscript
     12 code through high level entry points. The Android build tools generate these entry points through reflection on
     13 the native Renderscript code, which you write in C (C99 standard). The Renderscript code
     14 does the intensive computation and returns the result back to the Android VM.</p>
     15 
     16 <p>You can find the Renderscript native
     17 APIs in the <code>&lt;sdk_root&gt;/platforms/android-3.0/renderscript</code> directory. 
     18 The Android system APIs are broken into a few main groups:</p>
     19 
     20 <h4>Core</h4>
     21 <p>These classes are used internally by the system for memory allocation. They are used by the classes that
     22 are generated by the build tools:</p>
     23 <ul>
     24   <li>Allocation</li>
     25   <li>Element</li>
     26   <li>Type</li>
     27   <li>Script</li>
     28 </ul>
     29 
     30 
     31 <h4>Data Types</h4>
     32 <p>These data types are used by the classes that are generated
     33 by the build tools. They are the reflected counterparts of the native data types that
     34 are defined by the native Renderscript APIs and used by your Renderscript code. The
     35 classes include:</p>
     36 <ul>
     37   <li>Byte2, Byte3, and Byte4</li>
     38   <li>Float2, Float3, Float4</li>
     39   <li>Int2, Int3, Int4</li>
     40   <li>Long2, Long3, Long4</li>  
     41   <li>Matrix2f, Matrix3f, Matrix4f</li>
     42   <li>Short2, Short3, Short4</li>
     43 </ul>
     44 
     45 <p>For example, if you declared the following struct in your .rs Renderscript file:</p>
     46 
     47 <pre>struct Hello { float3 position; rs_matrix4x4 transform; }</pre>
     48 
     49 <p>The build tools generate a class through reflection that looks like the following:</p>
     50 <pre>
     51 class Hello {
     52     static public class Item {
     53         Float4 position;
     54         Matrix4f transform;
     55     }
     56 Element createElement(RenderScript rs) {
     57         Element.Builder eb = new Element.Builder(rs);
     58         eb.add(Element.F32_3(rs), "position");
     59         eb.add(Element.MATRIX_4X4(rs), "transform");
     60         return eb.create();
     61     }
     62 }
     63 </pre>
     64 
     65 <h4>Graphics</h4>
     66 <p>These classes are specific to graphics Renderscripts and support a typical rendering
     67 pipeline.</p>
     68 <ul>
     69 <li>Mesh</li>
     70 <li>ProgramFragment</li>
     71 <li>ProgramRaster</li>
     72 <li>ProgramStore</li>
     73 <li>ProgramVertex</li>
     74 <li>RSSurfaceView</li>
     75 <li>Sampler</li>
     76 </ul>
     77 
     78 </p>
     79 <p>
     80 For information on how to create an application that uses Renderscript, and also the
     81 see <a href="../../../guide/topics/graphics/renderscript.html">3D with
     82 Renderscript</a> dev guide. 
     83 </p>
     84 </BODY>
     85 </HTML>
     86