Acme-MITHALDU-BleedingOpenGL

 view release on metacpan or  search on metacpan

BleedingOpenGL.pm  view on Meta::CPAN

  return $params;
}

sub glpRestoreScreen
{
  my($params) = @_;

  glutPositionWindow($params->{original_x},$params->{original_y});
  glutReshapeWindow($params->{original_w},$params->{original_h});
  glutPostRedisplay();
}

sub glpCheckExtension
{
  my(@extensions) = @_;

  # Get/cache OpenGL Version
  if (!$gl_version)
  {
    $gl_version = glGetString(0x1F02); #GL_VERSION
    return 'Unable to retrieve OpenGL version; need context?' if (!$gl_version);
  }
  return "Not a numeric version: '$version'" if ($gl_version !~ m|^(\d+\.\d+)|);
  $gl_version = $1;

  # Get/cache OpenGL Extension Installations
  if (!scalar(%$glext_installed))
  {
    my $inst = glGetString(0x1F03); #GL_EXTENSIONS
    foreach my $ext (split(' ',$inst))
    {
      $glext_installed->{$ext} = $glext_dependencies->{$ext} || 0;
    }
  }
  if (!scalar(%$glext_installed))
  {
    return 'Unable to retrieve extensions; need context?' 
  }

  foreach my $ext (@extensions)
  {
    return "$ext not installed" if (!defined($glext_installed->{$ext}));

    # Check implementation
    my($ver,$deps) = split(';',$glext_installed->{$ext});
    return "$ext not implemented" if (!$ver);
    return "Needs at least OpenGL $ver" if ($gl_version < $ver);
    next if (!$deps);

    # Check dependencies
    foreach my $dep (split(',',$deps))
    {
      my $stat = glpCheckExtension("GL_$dep");
      return "Depends on $deps" if ($stat);
    }
  }
  return 0;
}
use Import::Into;
*OpenGL::import = sub {
   my %known = map { $_ => 1 } qw (OpenGL::Shader::Objects OpenGL::Shader::GLSL OpenGL::Shader::CG OpenGL::Shader::ARB OpenGL::Image::Magick OpenGL::Image::Targa);
   shift;
   my $target = caller;
   die "use Acme::MITHALDU::BleedingOpenGL" if !$known{$target};
   __PACKAGE__->import::into($target, @_);
};
$INC{"OpenGL.pm"} = 1;



#OpenGL::Array helper methods for normalizing names and chaining operations
@OpenGL::Matrix::ISA = 'OpenGL::Array';


1;
__END__



( run in 3.212 seconds using v1.01-cache-2.11-cpan-39bf76dae61 )