On Mon, Sep 24, 2012 at 12:46 PM, Chris Marshall devel.chm...@gmail.com wrote:
I don't have a working SDL module install that I could
check things out on. The posted gist seemed like a
regression of using direct PDL manipulation to read and
copy the image data to an SDL surface.
The pdl.pl example seemed ok to me until I tried looking
at the latest XS code where it seemed that the SDL module
doesn't not accept a packed string data as input to the
surface from routines.
Still don't have an SDL install but reviewing objects/Surface.xs
a bit more it appears that the -get_pixels_ptr() does return a
scalar perl reference to a PV with the string pointer being the
pointer to the pixel data.
However, the -new_from() method appears to assume the
pixel pointer is actually poked into the RV slot of the dereferenced
SV rather than the PV string. This seems inconsistent.
On Mon, Sep 24, 2012 at 12:39 PM, Kartik Thakore
Whats wrong with
On Mon, Sep 24, 2012 at 12:36 PM, Chris Marshall devel.chm...@gmail.com
Looking back through the code to the original SDL_Perl
I found version 2.0.5 which allows one to actually create
an SDL surface from pixel data. More recent versions
appear to copy the data and as far as I can tell, there is
no way to directly create an SDL surface from external
If that is the case (that SDL_CreateRGBSurfaceFrom is
not accessible from the perl API), have you implemented
another approach to achieve this?
On Mon, Sep 24, 2012 at 12:07 PM, Chris Marshall devel.chm...@gmail.com
On Mon, Sep 24, 2012 at 10:41 AM, Tobias Leich em...@froggs.de wrote:
The performance is poor of course.
I tried to use the piddle's pointer (-dataref or so) but it looks like
it is not pointing to a usable memory area.
$piddle-get_dataref returns a scalar reference to a perl
PV whose string content _is_ the data block. You should
be able to get the starting location for the pixel data (i.e.,
the string) via SvPV.
It looks like there are more than 4 bytes per pixel, and libSDL can't
Per the above, the get_dataref returns an RV to an Sv with
the data in the string. It is just a contiguous block of memory.
As far as I know, all the SDL memory buffers are just
contiguous blocks of memory (ignoring variations due to
The pdl.pl example is working, I see colored squares.
I don't know what the output should look like. I'm
cc-ing our PDL mailing list in the hopes that someone
with access to both PDL and SDL can give it a try.
Is there a cygwin install of SDL and libSDL?
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
I think the ref is from a previous iteration in the code
trying to get things working.
Speaking of documentation, do you have any on the
actual perl-libSDL bindings an data structures? Trying
to read XS is not the simplest way to sort things out---
especially since I am far for an expert on some of the
tricky XS technologies.
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.
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
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.