Hi,

set_pixel() doesnt expect an SDL::Color object. It expects to get a
color value.

So if you have 24bit surface like you have for $app, then you have to
pass 0xRRGGBB values.
If you change the red/green/blumasks to something else, you have to pass
appropriate color values.

Please note that your $app surface doesnt have an alpha channel, even
when giving it a depth of 32.
If you are going to draw a pixel on a real 32bit surface you have to
pass colors in 0xRRGGBBAA format.

If you have an 8bit surface (with a palette) then you cant pass color
values but palette indexes.

Cheers, FROGGS

Am 24.02.2012 08:13, schrieb Jon Mitchell:
> Hi,
>
> I'm trying to convert some of my old SDL perl programs to use SDL perl
> version 2.536 on 64bit gentoo with perl-5.12.4. Unexpectedly
> everything that gets drawn using comes out with an blue tinge. For
> example:
>
> #!/usr/bin/perl -w
>
> use strict;
>
> use SDL;
> use SDL::Color;
> use SDLx::App;
>
> my $app = SDLx::App->new (title => 'Test', width => 320, height => 320);
> my $colour = SDL::Color->new (0,0,0);
>
> for my $x (0..319) {
>    $app->set_pixel(10, $x, $colour);
> }
> $app->sync;
> sleep(5);
>
> This draws a blue line, where I would have expected a black line. I've
> tried adding redmask, bluemask, greenmask and alphamask options to the
> App new call, without any noticeable effect.
>
> I wondered if someone could try the above code to see if it's
> something to do with my set up, or a bug in my code.
>
> Thanks,

Reply via email to