The docs hold a fully fleshed out version of this approach for flat images that serve as an excellent example.
Piotr On 21 April 2014 09:02, Lerenard Michel <michelisotro...@gmail.com> wrote: > Thanks for your answer. I didn't thought I could pass an "illegal" pointer > to the function, i'll try this method instead. > > > 2014-04-21 0:19 GMT+02:00 Peter Hillman <pet...@wetafx.co.nz>: > > You will need to call setFrameBuffer before every call to writePixels, as >> you need to update the frame pointers. >> The pointer you pass to Slice/DeepSlice is the memory location of pixel >> (0,0) in the image. This point will move in memory as you update your >> memory block with different scanlines. >> >> Your first call is probably doing the right thing. For each subsequent >> call you need to set up a new FrameBuffer with yStride*currentScanLine() >> subtracted from the base pointer, where currentScanLine() is the y offset >> of the first scanline you are writing. >> >> The library will only access the memory locations it needs to for >> writePixels() - there's no problem in passing an "illegal address" as a >> base pointer to setFrameBuffer, as long as (base+yStride*currentScanLine() >> + dataWindow.min.x*xStride) is always a valid location when writePixels() >> is called. >> >> The above is true for xSampling=1 and ySampling=1 - you may need to >> adjust the logic accordingly otherwise. >> >> >> >> On 19/04/14 21:18, Lerenard Michel wrote: >> >> Hi, >> >> still trying to write deep data image, i'm struggling a bit with >> FrameBuffers. >> As I need to write subsampled deep images, I cannot use Tiled images. I >> went for the scanline approach. My idea was to write batches of n >> scanlines, in increasing Y order. >> >> This way I was thinking I would be able to limit the memory footprint: >> OpenEXR would not need to cache data, and I would be able to reuse the >> same buffers for every batch of lines: one buffer for Z and one for each >> visible channel. >> >> So I created a bunch of buffers, whose size was my image width * 32. >> (arbitrary value). I planned to feed these buffers to the DeepSlices I >> added to the FrameBuffer. >> Thing is, it appears the FrameBuffer/Slices cannot work that way: they >> need to have memory allocated for the whole image. I couldn't find any >> function limiting / defining the region I want to work on. >> >> Here are my questions: >> - Is the statement above correct ? >> - Should I work differently ? I doesn't look like using several >> framebuffers would help, I out of ideas at the moment. >> >> I can explain in more details my process if it can help. >> >> >> Thanks >> >> Michel >> >> >> _______________________________________________ >> Openexr-devel mailing >> listOpenexr-devel@nongnu.orghttps://lists.nongnu.org/mailman/listinfo/openexr-devel >> >> >> > > _______________________________________________ > Openexr-devel mailing list > Openexr-devel@nongnu.org > https://lists.nongnu.org/mailman/listinfo/openexr-devel > >
_______________________________________________ Openexr-devel mailing list Openexr-devel@nongnu.org https://lists.nongnu.org/mailman/listinfo/openexr-devel