OpenGL::Shader - copyright 2007 Graphcomp - ALL RIGHTS RESERVED Author: Bob "grafman" Free - grafman@graphcomp.com
This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.
This module provides an extensible abstraction for managing OpenGL shaders.
Requires OpenGL v0.56 or newer.
########## # Load and manage a shader use OpenGL(':all'); use OpenGL::Shader;
# Note: these APIs/methods requires a current GL context/window glutInit(); glutInitDisplayMode(GLUT_RGBA); glutInitWindowSize($w,$h); my $Window_ID = glutCreateWindow( "OpenGL::Shader test" );
# Get a hashref of shader types my $shaders = $OpenGL::Shader::GetTypes();
# Test for shader support my $ok = OpenGL::Shader::HasType('Cg');
# Instantiate a shader - list acceptable shaders by priority my $shdr = new OpenGL::Shader('GLSL','ARB');
# Get shader type and version my $type = $shdr->GetType(); my $ver = $shdr->GetVersion();
# Load shader by strings my $stat = $shdr->Load($fragment,$vertex);
# Load shader by file my $stat = $shdr->LoadFiles($fragment_file,$vertex_file);
# Enable $shdr->Enable();
# Get vertex attribute ID # returns undef if not supported or not found my $attr_id = $self->MapAttr($attr_name); glVertexAttrib4fARB($attr_id,$x,$y,$z,$w);
# Get Global Variable ID (uniform/local) my $var_id = $self->Map($var_name);
# Set float4 vector variable $stat = $self->SetVector($var_name,$x,$y,$z,$w);
# Set float4x4 matrix via OGA $stat = $self->SetMatrix($var_name,$oga);
# Do GL rendering
# Disable $shdr->Disable();
# Done glutDestroyWindow($Window_ID);