-
Notifications
You must be signed in to change notification settings - Fork 58
/
Copy pathColorExample.cs
84 lines (71 loc) · 3.1 KB
/
ColorExample.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
using Autodesk.DesignScript.Interfaces;
using Autodesk.DesignScript.Runtime;
namespace Examples
{
public class CustomRenderExample : IGraphicItem
{
private CustomRenderExample(){}
/// <summary>
/// Create an object which renders custom geometry.
/// </summary>
public static CustomRenderExample Create()
{
return new CustomRenderExample();
}
[IsVisibleInDynamoLibrary(false)]
public void Tessellate(IRenderPackage package, TessellationParameters parameters)
{
// Dynamo's renderer uses IRenderPackage objects
// to store data for rendering. The Tessellate method
// give you an IRenderPackage object which you can fill
// with render data.
// Set RequiresPerVertexColoration to let the renderer
// know that you needs to use a per-vertex color shader.
package.RequiresPerVertexColoration = true;
AddColoredQuadToPackage(package);
AddColoredLineToPackage(package);
}
private static void AddColoredQuadToPackage(IRenderPackage package)
{
// Triangle 1
package.AddTriangleVertex(0, 0, 0);
package.AddTriangleVertex(1, 0, 0);
package.AddTriangleVertex(1, 1, 0);
// For each vertex, add a color.
package.AddTriangleVertexColor(255, 0, 0, 255);
package.AddTriangleVertexColor(0, 255, 0, 255);
package.AddTriangleVertexColor(0, 0, 255, 255);
//Triangle 2
package.AddTriangleVertex(0, 0, 0);
package.AddTriangleVertex(1, 1, 0);
package.AddTriangleVertex(0, 1, 0);
package.AddTriangleVertexColor(255, 0, 0, 255);
package.AddTriangleVertexColor(0, 255, 0, 255);
package.AddTriangleVertexColor(0, 0, 255, 255);
package.AddTriangleVertexNormal(0, 0, 1);
package.AddTriangleVertexNormal(0, 0, 1);
package.AddTriangleVertexNormal(0, 0, 1);
package.AddTriangleVertexNormal(0, 0, 1);
package.AddTriangleVertexNormal(0, 0, 1);
package.AddTriangleVertexNormal(0, 0, 1);
package.AddTriangleVertexUV(0, 0);
package.AddTriangleVertexUV(0, 0);
package.AddTriangleVertexUV(0, 0);
package.AddTriangleVertexUV(0, 0);
package.AddTriangleVertexUV(0, 0);
package.AddTriangleVertexUV(0, 0);
}
private static void AddColoredLineToPackage(IRenderPackage package)
{
package.AddLineStripVertex(0,0,0);
package.AddLineStripVertex(5,5,5);
package.AddLineStripVertexColor(255,0,0,255);
package.AddLineStripVertexColor(255,0,0,255);
// Specify line segments by adding a line vertex count.
// Ex. The above line has two vertices, so we add a line
// vertex count of 2. If we had tessellated a curve with n
// vertices, we would add a line vertex count of n.
package.AddLineStripVertexCount(2);
}
}
}