public override void End() { foreach (var request in _requests) { var vertArray = request.Value.ToArray(); var elemArray = new short[vertArray.Length]; var elemIndex = 0; for (var n = 0; n < vertArray.Length; n += PointsPerPrimitive) { for (var p = 0; p < PointsPerPrimitive; p++) { elemArray[elemIndex++] = (short)(n + p); } } CalculateNormals(vertArray); var vbo = new VertexBufferObject(request.Key, vertArray, elemArray); switch (Mode) { case VertexTessellatorMode.Render: vbo.Render(PrimitiveType, Shader); vbo.Dispose(); break; case VertexTessellatorMode.Generate: GeneratedVBOs.Add(vbo); break; } } }
public override void Begin(PrimitiveType primitiveType) { base.Begin(primitiveType); if ((primitiveType != PrimitiveType.Triangles) && (primitiveType != PrimitiveType.Quads)) { throw new ArgumentException("Invalid value.", "primitiveType"); } GeneratedVBOs.Clear(); _requests.Clear(); }