Example #1
0
        internal override uint[] Search(RenderEventArgs arg,
                                        int x, int y,
                                        uint lastVertexId, ZeroIndexRenderer modernRenderer)
        {
            ZeroIndexBufferPtr zeroIndexBufferPtr = modernRenderer.IndexBufferPtr;
            ZeroIndexBufferPtr indexBufferPtr     = null;

            // when the temp index buffer could be long, it's no longer needed.
            // what a great OpenGL API design!
            using (var buffer = new ZeroIndexBuffer(DrawMode.LineLoop,
                                                    zeroIndexBufferPtr.FirstVertex, zeroIndexBufferPtr.VertexCount))
            {
                indexBufferPtr = buffer.GetBufferPtr() as ZeroIndexBufferPtr;
            }
            modernRenderer.Render4InnerPicking(arg, indexBufferPtr);
            uint id = ColorCodedPicking.ReadPixel(x, arg.CanvasRect.Height - y - 1);

            indexBufferPtr.Dispose();

            if (id == zeroIndexBufferPtr.FirstVertex)
            {
                return(new uint[] { (uint)(zeroIndexBufferPtr.FirstVertex + zeroIndexBufferPtr.VertexCount - 1), id, });
            }
            else
            {
                return(new uint[] { id - 1, id, });
            }
        }
Example #2
0
        /// <summary>
        ///
        /// </summary>
        /// <returns></returns>
        protected override IndexBufferPtr Upload2GPU()
        {
            ZeroIndexBufferPtr bufferPtr = new ZeroIndexBufferPtr(
                this.Mode, this.FirstVertex, this.VertexCount);

            return(bufferPtr);
        }
 public IndexBufferPtr GetIndex()
 {
     if (indexBufferPtr == null)
     {
         using (var buffer = new ZeroIndexBuffer(DrawMode.TriangleFan, 0, 4))
         {
             indexBufferPtr = buffer.GetBufferPtr() as ZeroIndexBufferPtr;
         }
     }
     return(indexBufferPtr);
 }
 public ZeroIndexBufferPtrController(ZeroIndexBufferPtr ptr)
 {
     // TODO: Complete member initialization
     this.ptr = ptr;
 }
Example #5
0
 public ZeroIndexBufferPtrController(ZeroIndexBufferPtr ptr)
 {
     // TODO: Complete member initialization
     this.ptr = ptr;
 }
 public IndexBufferPtr GetIndex()
 {
     if (indexBufferPtr == null)
     {
         using (var buffer = new ZeroIndexBuffer(DrawMode.TriangleFan, 0, 4))
         {
             indexBufferPtr = buffer.GetBufferPtr() as ZeroIndexBufferPtr;
         }
     }
     return indexBufferPtr;
 }