Hi Chris, The performance is poor of course.
I tried to use the piddels pointer (->dataref or so) but it looks like it is not pointing to a usable memory area. It looks like there are more than 4 bytes per pixel, and libSDL can't handle that. The pdl.pl example is working, I see colored squares. I think we should need to improve our examples btw, there is not a single comment, thats bad. In the pdl.pl is a var $ref, which is never used. Thats a bit confusing. Cheers, Tobias Am 24.09.2012 16:09, schrieb Chris Marshall: > I took a look at the gist and it looks reasonable > (I can't run it because I don't have the SDL module > and lib installed on my system), however... > > I would expect the performance to be *very* poor > since the image data is essentially being converted > from packed byte data to a perl list and then poked > a byte at a time into the SDL surface data. > > The better approach would be to wrap a PDL object > (a.k.a. piddle) into an SDL surface. Then you could > just lock, copy the data via a PDL direct assignment, > unlock and use SDL. There is an examples/pdl.pl > that shows how to do the wrapping. > > BUT, I took a look at the xs code and it appears > that your SDL_Surface objects no longer use a > packed-string representation for the SDL surface > data. If that is the case, I would be surprised if > the pdl.pl example works at all now. > > If someone could verify this, I would appreciate it. > If that is the case, it should be straightforward to > modify the SDL_CreateRGBSurfaceFrom routine > to allow for a SvPV for pixel data as one alternative. > > Given the power of PDL for whole-image data > manipulation, allowing for easy interoperability > with the current SDL module would benefit both > our user and developer communities. > > Regards, > Chris > > > On Sun, Sep 23, 2012 at 3:07 PM, Tobias Leich <em...@froggs.de> wrote: >> Hi, Andrei asked some days ago how to load an image via PDL and but it >> in a Surface to use it in SDL. >> >> The example is here: https://gist.github.com/3772701 >> >> I'll put that in the examples folder too. >> >> Cheers, Tobias