/// <summary>
        /// Registers a new graphics interop resource for interop with OpenGL image
        /// </summary>
        /// <param name="resource">OpenGL resource to register</param>
        /// <param name="flags">register Flags</param>
        /// <param name="target">OpenGLImageTarget</param>
        public CudaOpenGLImageInteropResource(uint resource, CUGraphicsRegisterFlags flags, OpenGLImageTarget target)
        {
            _cudaResource  = new CUgraphicsResource();
            _resource      = resource;
            _registerFlags = flags;
            _target        = target;

            res = OpenGLNativeMethods.CUDA3.cuGraphicsGLRegisterImage(ref _cudaResource, _resource, target, flags);
            Debug.Write("");//Line(String.Format("{0:G}, {1}: {2}", DateTime.Now, "cuGraphicsGLRegisterImage", res));


            if (res != CUResult.Success)
            {
                throw new CudaException(res);
            }
            _IsRegistered = true;
            _IsMapped     = false;
        }
 /// <summary>
 /// Registers a new graphics interop resource for interop with OpenGL image
 /// </summary>
 /// <param name="resource">OpenGL resource to register</param>
 /// <param name="flags">register Flags</param>
 /// <param name="target">OpenGLImageTarget</param>
 /// <param name="mapFlags">resource mapping flags</param>
 public CudaOpenGLImageInteropResource(uint resource, CUGraphicsRegisterFlags flags, OpenGLImageTarget target, CUGraphicsMapResourceFlags mapFlags)
     : this(resource, flags, target)
 {
     SetMapFlags(mapFlags);
 }