示例#1
0
        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;
                }
            }
        }
示例#2
0
        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();
        }