Help-Site Computer Manuals
Software
Hardware
Programming
Networking
  Algorithms & Data Structures   Programming Languages   Revision Control
  Protocols
  Cameras   Computers   Displays   Keyboards & Mice   Motherboards   Networking   Printers & Scanners   Storage
  Windows   Linux & Unix   Mac

OpenGL::Shader
copyright 2007 Graphcomp - ALL RIGHTS RESERVED Author: Bob "grafman" Free - grafman@graphcomp.com

OpenGL::Shader - copyright 2007 Graphcomp - ALL RIGHTS RESERVED Author: Bob "grafman" Free - grafman@graphcomp.com


NAME


  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.


DESCRIPTION


  This module provides an extensible abstraction for managing OpenGL shaders.

  Requires OpenGL v0.56 or newer.


SYNOPSIS


  ##########

  # 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);
Programminig
Wy
Wy
yW
Wy
Programming
Wy
Wy
Wy
Wy