CSharpGL.PrimitiveRecognizer.Recognize C# (CSharp) Method

Recognize() public method

识别出以lastVertexId结尾的图元。
public Recognize ( uint lastVertexId, IntPtr pointer, OneIndexBuffer oneIndexBuffer ) : List
lastVertexId uint
pointer System.IntPtr
oneIndexBuffer OneIndexBuffer
return List
        public List<RecognizedPrimitiveInfo> Recognize(
         uint lastVertexId, IntPtr pointer, OneIndexBuffer oneIndexBuffer)
        {
            var lastIndexIdList = new List<RecognizedPrimitiveInfo>();
            switch (oneIndexBuffer.ElementType)
            {
                case IndexBufferElementType.UByte:
                    RecognizeByte(lastVertexId, pointer, oneIndexBuffer, lastIndexIdList);
                    break;

                case IndexBufferElementType.UShort:
                    RecognizeUShort(lastVertexId, pointer, oneIndexBuffer, lastIndexIdList);
                    break;

                case IndexBufferElementType.UInt:
                    RecognizeUInt(lastVertexId, pointer, oneIndexBuffer, lastIndexIdList);
                    break;

                default:
                    throw new NotImplementedException();
            }

            return lastIndexIdList;
        }

Same methods

PrimitiveRecognizer::Recognize ( uint lastVertexId, IntPtr pointer, OneIndexBuffer oneIndexBuffer, uint primitiveRestartIndex ) : List

Usage Example

Ejemplo n.º 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.PrimitiveRecognizer::Recognize