Softpedia
 


LINUX CATEGORIES:



GLOBAL PAGES >>
NEWS ARCHIVE >>
SOFTPEDIA REVIEWS >>
MEET THE EDITORS >>
WEEK'S BEST
  • Linux Kernel 3.9.3 / 3....
  • LibreOffice 3.6.6 / 4.0.3
  • MPlayer 1.1.1
  • systemd 204
  • Arch Linux 2013.05.01
  • Blender 2.67a
  • KDE Software Compilatio...
  • CrunchBang Linux Stable...
  • Elementary OS 0.1 / 0.2...
  • SystemRescueCd 3.6.0
  • Home > Linux > Programming > Perl Modules

    OpenGL::Image 1.03

    Download button

    No screenshots available
    Downloads: 179  Tell us about an update
    User Rating:
    Rated by:
    NOT RATED
    0 user(s)
    Developer:

    License / Price:

    Last Updated:

    Category:
    Bob Free | More programs
    Perl Artistic License / FREE
    December 11th, 2010, 13:55 GMT
    ROOT / Programming / Perl Modules

     Read user reviews (0)  Refer to a friend  Subscribe

    OpenGL::Image description

    An extensible wrapper to abstract imaging interfaces

    OpenGL::Image is a Perl module, an extensible wrapper to abstract imaging interfaces.

    By default, this module uses the OpenGL::Image::Targa module; support for other imaging libraries may be added by providing plug-in modules in the OpenGL/Image folder.

    An OpenGL::Image::Magick module is also provided for use with PerlMagick. For best performance, ImageMagick 6.3.5 or newer should be installed.

    SYNOPSIS

     ##########
     # Check for installed imaging engines
     use OpenGL::Image;

     # Get hashref of installed imaging engines
     # Keys are engine names; values are info hashes, including version,
     # priority (1 .. n, 1 is highest), module (Perl module name)
     # and description.
     # Priority can be set using Engines.lst (see INSTALL); otherwise
     # 'Targa' has top priority, and others are in unspecified order.
     my $engine_hashref = OpenGL::Image::GetEngines();

     # In list context, returns list of info hashes sorted by engine
     # priority; info hash does not include a priority value.
     my @sorted_engine_info = OpenGL::Image::GetEngines();

     # Check for a specific engine and optional version support
     # Returns an info hashref for the engine if available; otherwise undef.
     my $info_hashref = OpenGL::Image::HasEngine('Magick','6.3.5');


     ##########
     # Load texture - defaults to highest priority engine if none specified;
     # if Engines.lst is not specified, the highest priority is the Targa engine.
     my $tex = new OpenGL::Image(source=>'test.tga');

     # Get GL info
     my($ifmt,$fmt,$type) = $tex->Get('gl_internalformat','gl_format','gl_type');
     my($w,$h) = $tex->Get('width','height');

     # Test if power of 2
     if (!$tex->IsPowerOf2()) return;

     # Set texture
     glTexImage2D_c(GL_TEXTURE_2D, 0, $ifmt, $w, $h, 0, $fmt, $type, $tex->Ptr());


     ##########
     # Modify GL frame using ImageMagick
     my $frame = new OpenGL::Image(engine=>'Magick',width=>$w,height=>$h);

     # Get default GL info
     my($def_fmt,$def_type) = $tex->Get('gl_format','gl_type');

     # Read frame pixels
     glReadPixels_c(0, 0, $width, $height, $def_fmt, $def_type, $frame->Ptr());

     # Sync native image buffer
     # Must use this prior to making native calls
     $frame->Sync();

     # Modify frame pixels
     $frame->Native->Blur();

     # Sync OGA
     # Must use this atfer all native calls are done
     $frame->SyncOGA();

     # Draw back to frame
     glDrawPixels_c(0, 0, $width, $height, $def_fmt, $def_type, $frame->Ptr());


     ##########
     # Save GL frame
     my $image = new OpenGL::Image(width=>$width,height=>$height);

     # Read frame pixels
     glReadPixels_c(0, 0, $width, $height, $def_fmt, $def_type, $image->Ptr());

     # Save file - automatically does a Sync before write
     $image->Save('MyImage.tga');


     ##########
     # Get/Set normalized pixels

     my($r,$g,$b,$a) = $img->GetPixel($x,$y);

     $img->SetPixel($x,$y, 1.0, 0.5, 0.0, 1.0);

     # Sync cache after done modifying pixels
     $frame->Sync();


     ##########
     # Methods defined in OpenGL::Image::Common:

     # Get native engine object
     my $obj = $img->Native;
     $obj->Quantize() if ($obj);

     # Alternately (Assuming the native engine supports Blur):
     $img->Native->Blur();

     # Test if image width is a power of 2
     if ($img->IsPowerOf2());

     # Test if all listed values are a power of 2
     if ($img->IsPowerOf2(@list));

     # Get largest power of 2 size within dimensions of image
     my $size = $img->GetPowerOf2();

     # Get one or more parameter values
     my @values = $img->Get(@params);

     # Return the image's cache as an OpenGL::Array object.
     # Note: OGA may change after a cache update
     my $oga = $img->GetArray();

     # Return a C pointer to the image's cache.
     # For use with OpenGL's "_c" APIs.
     # Note: pointer may change after a cache update
     $img->Ptr();


     ##########
     # Supported parameters:

     # version - version of the engine
     # source - source image, if defined
     # width - width of image in pixels
     # height - height of image in pixels
     # pixels - number of pixels
     # components - number of pixel components
     # size - bytes per component
     # length - cache size in bytes
     # endian - 1 if big endian; otherwise 0
     # alpha - 1: normal alpha channel, -1: inverted alpha channel; 0: none
     # flipped - 1 bit set if cache ordered top to bottom; others reserved
     # gl_internalformat - internal GL pixel format. eg: GL_RGBA8, GL_RGBA16
     # gl_format - GL pixel format. eg: GL_RGBA, GL_BGRA
     # gl_type - GL data type. eg: GL_UNSIGNED_BYTE, GL_UNSIGNED_SHORT


     ##########
     # APIs and Methods defined in engine modules:

     # Get engine version
     my $ver = OpenGL::Image::ENGINE_MODULE::EngineVersion();

     # Sync the image cache after a write.
     # Used by some engines for paged caches; otherwise a NOP.
     $img->Sync();

     # Save the image to a PNG file (assuming the engine supports PNGs)
     $img->Save('MyImage.png');

     # Get image blob.
     my $blob = $img->GetBlob();



    Product's homepage

    Requirements:

    · Perl

      


    TAGS:

    abstract imaging | Perl module | OpenGL | abstract | imaging

    Go to top

    WindowsGamesDriversMacLinuxScriptsMobileHandheldNews

    SUBMIT PROGRAM   |   ADVERTISE   |   GET HELP   |   SEND US FEEDBACK   |   RSS FEEDS   |   UPDATE YOUR SOFTWARE   |   ROMANIAN FORUM