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 )