aboutsummaryrefslogtreecommitdiff
path: root/js/lib/geom/shape-primitive.js
diff options
context:
space:
mode:
authorEric Guzman2012-03-12 15:33:04 -0700
committerEric Guzman2012-03-12 15:33:04 -0700
commit7e3161153b87b891875ac65368a19aed12909fa3 (patch)
treeb80f48d711a9729fc39dbbdff28c4f0620e7302d /js/lib/geom/shape-primitive.js
parent7a28932ba8a7517bbaaabe1f5edf678416aafc9c (diff)
parent69d90467865a1384725b2301901be2180c5a841f (diff)
downloadninja-7e3161153b87b891875ac65368a19aed12909fa3.tar.gz
Merge branch 'refs/heads/master' into CSSPanelUpdates
Conflicts: js/panels/PanelContainer/PanelContainer.reel/PanelContainer.js
Diffstat (limited to 'js/lib/geom/shape-primitive.js')
-rw-r--r--js/lib/geom/shape-primitive.js54
1 files changed, 54 insertions, 0 deletions
diff --git a/js/lib/geom/shape-primitive.js b/js/lib/geom/shape-primitive.js
new file mode 100644
index 00000000..bf0087b2
--- /dev/null
+++ b/js/lib/geom/shape-primitive.js
@@ -0,0 +1,54 @@
1/* <copyright>
2This file contains proprietary software owned by Motorola Mobility, Inc.<br/>
3No rights, expressed or implied, whatsoever to this software are provided by Motorola Mobility, Inc. hereunder.<br/>
4(c) Copyright 2011 Motorola Mobility, Inc. All Rights Reserved.
5</copyright> */
6
7// Helper function for generating a RDGE primitive
8var ShapePrimitive = {};
9
10ShapePrimitive.create = function(coords, normals, uvs, indices, primType, vertexCount) {
11 var renderer = g_Engine.getContext().renderer;
12
13 // to setup a primitive you must define it
14 // create a new primitive definition here to then fill out
15 var prim = new rdgePrimitiveDefinition();
16
17 // the vertex definition declares how the data will be delivered to the shader
18 // the position of an element in array determines which attribute in a shader the
19 // data is bound to
20 prim.vertexDefinition = {
21 // this shows two ways to map this data to an attribute
22 "vert":{'type':renderer.VS_ELEMENT_POS, 'bufferIndex':0, 'bufferUsage': renderer.BUFFER_STATIC},
23 "a_pos":{'type':renderer.VS_ELEMENT_POS, 'bufferIndex':0, 'bufferUsage': renderer.BUFFER_STATIC},
24
25 "normal":{'type':renderer.VS_ELEMENT_FLOAT3, 'bufferIndex':1, 'bufferUsage': renderer.BUFFER_STATIC},
26 "a_nrm":{'type':renderer.VS_ELEMENT_FLOAT3, 'bufferIndex':1, 'bufferUsage': renderer.BUFFER_STATIC},
27 "a_normal":{'type':renderer.VS_ELEMENT_FLOAT3, 'bufferIndex':1, 'bufferUsage': renderer.BUFFER_STATIC},
28
29 "texcoord":{'type':renderer.VS_ELEMENT_FLOAT2, 'bufferIndex':2, 'bufferUsage': renderer.BUFFER_STATIC},
30 "a_texcoord":{'type':renderer.VS_ELEMENT_FLOAT2, 'bufferIndex':2, 'bufferUsage': renderer.BUFFER_STATIC}
31 };
32
33 // the actual data that correlates to the vertex definition
34 prim.bufferStreams = [ coords, normals, uvs ];
35
36 // what type of buffers the data resides in, static is the most common case
37 prim.streamUsage = [ renderer.BUFFER_STATIC, renderer.BUFFER_STATIC, renderer.BUFFER_STATIC ];
38
39 // this tells the renderer to draw the primitive as a list of triangles
40 prim.type = primType;
41
42 prim.indexUsage = renderer.BUFFER_STREAM;
43 prim.indexBuffer = indices;
44
45 // finally the primitive is created, buffers are generated and the system determines
46 // the data it needs to draw this primitive according to the previous definition
47 renderer.createPrimitive(prim, vertexCount);
48
49 return prim;
50};
51
52if (typeof exports === "object") {
53 exports.ShapePrimitive = ShapePrimitive;
54} \ No newline at end of file