예제 #1
0
        /// <summary>
        /// Creates a new buffer from a specified buffer.
        /// </summary>
        /// <param name="buffer"> The buffer to create the buffer from. </param>
        /// <param name="flags"> A bit-field that is used to specify allocation and usage information about the buffer. </param>
        /// <param name="offset"> The index of the element of <paramref name="buffer"/>, where the buffer starts. </param>
        /// <param name="count"> The number of elements of <paramref name="buffer"/> to include in the buffer. </param>
        public ComputeSubBuffer(ComputeBuffer <T> buffer, ComputeMemoryFlags flags, long offset, long count)
            : base(buffer.Context, flags)
        {
            SysIntX2 region = new SysIntX2(offset * Marshal.SizeOf(typeof(T)), count * Marshal.SizeOf(typeof(T)));

            CL11.CreateSubBuffer(Handle, flags, ComputeBufferCreateType.Region, ref region, out ComputeErrorCode error);
            ComputeException.ThrowOnError(error);
            Init();
        }
예제 #2
0
        /// <summary>
        /// Creates a new <see cref="ComputeSubBuffer{T}"/> from a specified <see cref="ComputeBuffer{T}"/>.
        /// </summary>
        /// <param name="buffer"> The buffer to create the <see cref="ComputeSubBuffer{T}"/> from. </param>
        /// <param name="flags"> A bit-field that is used to specify allocation and usage information about the <see cref="ComputeBuffer{T}"/>. </param>
        /// <param name="offset"> The index of the element of <paramref name="buffer"/>, where the <see cref="ComputeSubBuffer{T}"/> starts. </param>
        /// <param name="count"> The number of elements of <paramref name="buffer"/> to include in the <see cref="ComputeSubBuffer{T}"/>. </param>
        public ComputeSubBuffer(ComputeBuffer <T> buffer, ComputeMemoryFlags flags, long offset, long count)
            : base(buffer.Context, flags)
        {
            var sizeofT = ComputeTools.SizeOf <T>();

            SysIntX2 region = new SysIntX2(offset * sizeofT, count * sizeofT);

            Handle = CL11.CreateSubBuffer(buffer.Handle, flags, ComputeBufferCreateType.Region, ref region, out var error);
            ComputeException.ThrowOnError(error);

            Init();
        }
예제 #3
0
 /// <summary>
 /// 
 /// </summary>
 /// <param name="x2"></param>
 /// <param name="z"></param>
 public SysIntX3(SysIntX2 x2, long z)
     : this(x2.X, x2.Y, new IntPtr(z))
 {
 }
예제 #4
0
파일: SysIntX3.cs 프로젝트: scenevista/Cloo
 /// <summary>
 ///
 /// </summary>
 /// <param name="x2"></param>
 /// <param name="z"></param>
 public SysIntX3(SysIntX2 x2, long z)
     : this(x2.X, x2.Y, new IntPtr(z))
 {
 }