Graphics::Raylib::Texture - Drawable Texture from Image


version 0.025


    use Graphics::Raylib '+family';
    use PDL;
    use PDL::Matrix;

    my $pdl = mpdl[
                     [0, 1, 1, 1, 0],
                     [1, 0, 0, 0, 0],
                     [0, 1, 1, 1 ,0],
                     [0, 0, 0, 0 ,1],
                     [0, 1, 1, 1 ,0],

    my $g = Graphics::Raylib->window(240, 240);

    my $img = Graphics::Raylib::Texture->new(matrix => unpdl($pdl), color => YELLOW, transposed => 1);

    while (!$g->exiting) {
        $img->matrix = unpdl($pdl);
        $img->rotation -= 1;

        Graphics::Raylib::draw {

        # now do some operations on $pdl, to get next iteration


For drawing images


new( file => $filename, [width => $imgwidth, height => imgheight] ] ) =item new( pixels => $str, [width => $imgwidth, height => imgheight] ] ) =item new( bytes => $rawbytes, [width => $imgwidth, height => imgheight] ] ) =item new( imager => $imager, [width => $imgwidth, height => imgheight] ] )

Prepares the image the for drawing. The image may be specified as file name, by its bytes, an instance of Imager or Graph::Easy or as a series of pixels. pixels' value may be either an array ref of array refs or a string. In all cases except for pixels => string, the size can be omitted and it will be inferred from the image.

Specifying fullscreen => 1 overrides height and width.

new( matrix => $AoA, color => $color, [ width => $image_width, height => $image_height, transposed => 0, $rotate => 0 ])

Creates a texture out of a matrix for printing. $AoA is an array of arrays ref. $image_width and $image_height are the size of the area on which the Matrix should be drawn. It's optional defaults to the screen size.

If $color is a Graphics::Raylib::Color, it will be used to color all positive $AoA elements. The space occupied by negative and zero elements stays at background color.

if $color is a code reference, It will be evaluated for each matrix element, with the element's value as argument. The return type of the code reference will be used for the color. Return undef, for omitting the element (drawing it transparently). $color == undef is an unsafe but faster shorthand for $color = sub { shift }.

transposed => determines whether the image should be drawn transposed ( x,y flipped ). It's more effecient than transposing in a separate step.

rotate => sets an angle (in degrees) for rotation. Rotation origin is the center of the image.

See the game of life example at Graphics::Raylib (or t/30-game-of-life.t) for a more complete example.


Call this while in a Graphics::Raylib::draw block in order to draw the image to screen.

By default, the texture will be drawn centered.

flip( vertical => 1, horizontal => 0)

Flip the image in the specified orientation


lvalue subroutine returning the image's underlying Graphics::Raylib::XS::Image


Reload texture from image



Graphics::Raylib Graphics::Raylib::Shape


Ahmad Fatoum <>,


Copyright (C) 2018 Ahmad Fatoum

This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself.