The description of your display is too vague. Are you displaying the N slices side-by-side, like a lightbox view? Are you viewing the N slices as a slab, e.g. with volume rendering, or as a MIP? Are you reslicing the data to do a multi-planar view?
The approach that I would recommend is creating your own vtkImageData object and getting a pointer to its internal buffer as shown in this reply. Then you can use e.g. memcpy()
or a similarly efficient mechanism to copy slices from your external source into the vtkImageData.
Alternatively, if you have direct access to the buffer where your external source stores its data, and if that buffer is contiguous, then it is possible create a vtkImageData object that directly “wraps” that buffer and makes it available to the VTK pipeline.