CSharpGL.PrimitiveRecognizerFactory.Create C# (CSharp) Method

Create() public static method

public static Create ( DrawMode mode ) : PrimitiveRecognizer
mode DrawMode
return PrimitiveRecognizer
        public static PrimitiveRecognizer Create(DrawMode mode)
        {
            PrimitiveRecognizer recognizer = null;

            switch (mode)
            {
                case DrawMode.Points:
                    recognizer = new PointsRecognizer();
                    break;

                case DrawMode.LineStrip:
                    recognizer = new LineStripRecognizer();
                    break;

                case DrawMode.LineLoop:
                    recognizer = new LineLoopRecognizer();
                    break;

                case DrawMode.Lines:
                    recognizer = new LinesRecognizer();
                    break;

                case DrawMode.LineStripAdjacency:
                    break;

                case DrawMode.LinesAdjacency:
                    break;

                case DrawMode.TriangleStrip:
                    recognizer = new TriangleStripRecognizer();
                    break;

                case DrawMode.TriangleFan:
                    recognizer = new TriangleFanRecognizer();
                    break;

                case DrawMode.Triangles:
                    recognizer = new TrianglesRecognizer();
                    break;

                case DrawMode.TriangleStripAdjacency:
                    break;

                case DrawMode.TrianglesAdjacency:
                    break;

                case DrawMode.Patches:
                    break;

                case DrawMode.QuadStrip:
                    recognizer = new QuadStripRecognizer();
                    break;

                case DrawMode.Quads:
                    recognizer = new QuadsRecognizer();
                    break;

                case DrawMode.Polygon:
                    break;

                default:
                    break;
            }

            if (recognizer == null)
            {
                throw new NotImplementedException(string.Format(
                    "尚未实现[{0}]的recognizer!", mode));
            }

            return recognizer;
        }
    }

Usage Example

Example #1
0
        /// <summary>
        /// 遍历以<paramref name="lastVertexId"/>为最后一个顶点的图元,
        /// 瞄准每个图元的索引(例如1个三角形有3个索引)中的最后一个索引,
        /// 将此索引在<see cref="IndexBuffer"/>中的索引(位置)收集起来。
        /// </summary>
        /// <param name="arg"></param>
        /// <param name="lastVertexId"></param>
        /// <returns></returns>
        private List <RecognizedPrimitiveInfo> GetLastIndexIdList(PickingEventArgs arg, uint lastVertexId)
        {
            var indexBuffer = this.Renderer.PickingRenderUnit.VertexArrayObject.IndexBuffer;
            PrimitiveRecognizer recognizer = PrimitiveRecognizerFactory.Create(
                (arg.GeometryType.Contains(GeometryType.Point) &&
                 indexBuffer.Mode.ToGeometryType() == GeometryType.Line) ?
                DrawMode.Points : indexBuffer.Mode);

            PrimitiveRestartState glState = GetPrimitiveRestartState();

            var    buffer  = indexBuffer as OneIndexBuffer;
            IntPtr pointer = buffer.MapBuffer(MapBufferAccess.ReadOnly);
            List <RecognizedPrimitiveInfo> primitiveInfoList = null;

            if (glState == null)
            {
                primitiveInfoList = recognizer.Recognize(lastVertexId, pointer, indexBuffer as OneIndexBuffer);
            }
            else
            {
                primitiveInfoList = recognizer.Recognize(lastVertexId, pointer, indexBuffer as OneIndexBuffer, glState.RestartIndex);
            }
            buffer.UnmapBuffer();

            return(primitiveInfoList);
        }
All Usage Examples Of CSharpGL.PrimitiveRecognizerFactory::Create
PrimitiveRecognizerFactory