Well this does something ... But I don't think thats what we want ... I
still don't know how to get color data from dataref.

use SDL;
BEGIN{
    delete $main::{in};

}
use PDL;
use PDL::NiceSlice;
use SDL::Video;
use SDL::Event;
use SDL::Surface;
use SDL::Constants;
use Carp;


# Allocate a 10x10 array for rgb.  I think that only the zeroes function
allows
# # you to declare a piddle with a specific data type
my $pdl = zeroes(byte, 3, 10, 10);
#
#
# # Set values. Use in place to be sure we don't get another allocation,
which may be the wrong type.
# # Note that the sequence wraps back to zero after hitting 256, because
they're bytes!
 $pdl->inplace->sequence;
#
# # Now for a really silly animation - turn all the pixels white




carp 'Unable to init SDL: '.SDL::get_error() if( SDL::init(SDL_INIT_VIDEO) <
0);

my $screen = SDL::Video::set_video_mode( 640, 480, 32, SDL_SWSURFACE);

carp 'Unable to set 640x480x32 video'.SDL::get_error() if(!$screen);

my $offset = $screen->pitch / 4;

sub putpixel
{
    my($x, $y, $color) = @_;
    my $lineoffset = $y * ($screen->pitch / 4);
    $screen->set_pixels( $lineoffset+ $x, $color);
}
sub render
{
    if( SDL::Video::MUSTLOCK( $screen) )
    {
        return if (SDL::Video::lock_surface( $screen ) < 0)
    }


    for (my $i = 0; $i < 300; $i++) {

             $pdl()->clump(-1)->($i) = 255;
        $iv = $pdl->get_dataref();
        putpixel( $i, $i,  $iv );
    }

    SDL::Video::unlock_surface($screen) if (SDL::Video::MUSTLOCK($screen));

    SDL::Video::update_rect($screen, 0, 0, 640, 480);

}


while(1)
{
    render();

        my $event = SDL::Event->new();

        while( SDL::Events::poll_event($event) )
        {
            my $type = $event->type;

            if( $type == SDL_QUIT)
            {
                SDL::quit();
                exit();
            }


        }



    SDL::Events::pump_events();

}





On Mon, Nov 16, 2009 at 6:36 PM, David Mertens <dcmert...@gmail.com> wrote:

> On Mon, Nov 16, 2009 at 4:51 PM, Kartik Thakore 
> <thakore.kar...@gmail.com>wrote:
>
>> How do I update this?  like animation?
>>
>> while(1)
>> {
>>
>>   $pdl_memory->get_dataref();
>>
>> }
>>
>
> Yeah, you know, I used a terrible variable name for that piddle.  Let's try
> this:
>
> --------%<--------
>
> use PDL;
> use PDL::NiceSlice;
>
>
> # Allocate a 10x10 array for rgb.  I think that only the zeroes function
> allows
> # you to declare a piddle with a specific data type
> my $pdl = zeroes(byte, 3, 10, 10);
>
>
> # Set values. Use in place to be sure we don't get another allocation,
> which may be the wrong type.
> # Note that the sequence wraps back to zero after hitting 256, because
> they're bytes!
> $pdl->inplace->sequence;
>
> # Now for a really silly animation - turn all the pixels white
> for (my $i = 0; $i < 300; $i++) {
>   $pdl()->clump(-1)->($i) = 255;
>   # Do something with piddle data here.
> }
>
> --------%<--------
>
> Is that a bit clearer?  Does anybody have a better sample?
>
> David
>

Reply via email to