SDL-OpenGL-Cg

 view release on metacpan or  search on metacpan

lib/SDL/OpenGL/Cg.xs  view on Meta::CPAN


#define ERROR_STORE "SDL::OpenGL::Cg::_error_message"

MODULE = SDL::OpenGL::Cg        PACKAGE = SDL::OpenGL::Cg

void
cgBindProgram (...)
  PREINIT:
    CGprogram program;
    CGerror err;
  PPCODE:
    if (items != 1) {
      warn ("Usage: cgBindProgram($program)");
      return;
    }
    program = INT2PTR(CGprogram, SvIV(ST(0)));
    cgGLBindProgram(program);
    EXTEND (SP,1);
    if (err = cgGetError()) {
      sv_setiv(get_sv(ERROR_STORE,1),PTR2IV(err));
      PUSHs (&PL_sv_undef);
    } else {
      PUSHs (sv_2mortal(newSViv(PTR2IV(program))));
    }

void
cgCopyProgram (...)
  PREINIT:
    CGprogram program;
    CGprogram new_program;
    CGerror err;
  PPCODE:
    EXTEND (SP,1);
    if (items != 1) {
      warn ("Usage: $new_program = cgCopyProgram($program)");
      PUSHs (&PL_sv_undef);
      return;
    }
    program = INT2PTR(CGprogram, SvIV(ST(0)));
    new_program = cgCopyProgram(program);
    if (err = cgGetError()) {
      sv_setiv(get_sv(ERROR_STORE,1),PTR2IV(err));
      PUSHs (&PL_sv_undef);
    } else {
      PUSHs (sv_2mortal(newSViv(PTR2IV(new_program))));
    }

void
cgCreateContext (...)
  PREINIT:
    CGcontext context;
    CGerror err;
  PPCODE:
    EXTEND (SP,1);
    if (items != 0) {
      warn ("Usage: cgCreateContext()");
      PUSHs (&PL_sv_undef);
      return; 
    }
    context = cgCreateContext();
    if (err = cgGetError()) {
      sv_setiv(get_sv(ERROR_STORE,1),PTR2IV(err));
      PUSHs (&PL_sv_undef);

lib/SDL/OpenGL/Cg.xs  view on Meta::CPAN

cgCreateProgram (...)
  PREINIT:
    CGcontext context;
    CGenum program_type;
    char *program_code;
    CGprofile profile;
    char *entry;
    char **args;
    CGprogram program;
    CGerror err;
  PPCODE:
    EXTEND (SP,1);
    if (items != 6) {
      warn ("Usage: $program = cgCreateProgramFromFile ($context,$type,$filename,$program_name, $profile, $entry)");
      PUSHs (&PL_sv_undef);
      return;
    }

    context = INT2PTR(CGcontext, SvIV(ST(0)));
    program_type = SvUV(ST(1));
    program_code = SvPV_nolen(ST(2));

lib/SDL/OpenGL/Cg.xs  view on Meta::CPAN

cgCreateProgramFromFile (...)
  PREINIT:
    CGcontext context;
    CGenum program_type;
    char *program_name;
    CGprofile profile;
    char *entry;
    char **args;
    CGprogram program;
    CGerror err;
  PPCODE:
    EXTEND (SP,1);
    if (items != 6) {
      warn ("Usage: $program = cgCreateProgramFromFile ($context,$type,$filename,$program_name, $profile, $entry)");
      PUSHs (&PL_sv_undef);
      return;
    }

    context = INT2PTR(CGcontext, SvIV(ST(0)));
    program_type = SvUV(ST(1));
    program_name = SvPV_nolen(ST(2));

lib/SDL/OpenGL/Cg.xs  view on Meta::CPAN

      sv_setiv(get_sv(ERROR_STORE,1),PTR2IV(err));
      PUSHs (&PL_sv_undef);
    } else {
      PUSHs (sv_2mortal(newSViv(PTR2IV(program))));
    }
    
void
cgDestroyContext (...)
  PREINIT:
    CGerror err;
  PPCODE:
    EXTEND (SP,1);
    if (items != 1) {
      warn ("Usage: cgDestroyContext($context");
      PUSHs (&PL_sv_undef);
      return;
    }
    cgDestroyContext(INT2PTR(CGcontext, SvIV(ST(0))));
    if (err = cgGetError()) { 
      sv_setiv(get_sv(ERROR_STORE,1),PTR2IV(err));
      PUSHs (&PL_sv_undef);
    } else {
      PUSHs (&PL_sv_yes);
    }

void 
cgDisableProfile (...)
  PREINIT: 
    CGerror err;
  PPCODE:
    EXTEND (SP,1);
    if (items != 1) {
      warn ("Usage: cgDisableProfile($profile)");
      PUSHs (&PL_sv_undef);
      return;
    }
    cgGLDisableProfile (SvNV(ST(0)));
    if (err = cgGetError()) { 
      sv_setiv(get_sv(ERROR_STORE,1),PTR2IV(err));
      PUSHs (&PL_sv_undef);
    } else {
      PUSHs (&PL_sv_yes);
    }

bool
cgEnableProfile (...)
  PREINIT:
    CGerror err;
  PPCODE:
    EXTEND (SP,1);
    if (items != 1) {
      warn ("Usage: cgEnableProfile($profile)");
      PUSHs (&PL_sv_undef);
      return;
    }
    cgGLEnableProfile (SvNV(ST(0)));
    if (err = cgGetError()) { 
      sv_setiv(get_sv(ERROR_STORE,1),PTR2IV(err));
      PUSHs (&PL_sv_undef);
    } else {
      PUSHs (&PL_sv_yes);
    }

void
cgGetError(...)
  PREINIT:  
    SV* err;
  PPCODE:
    EXTEND (SP,1);
    err = get_sv(ERROR_STORE,1);
    if (SvTYPE(err) == SVt_NULL) {
      PUSHs (sv_2mortal(newSViv(0)));
    } else {
      PUSHs (sv_mortalcopy(err));
      sv_setiv(err, 0);
    }

void
cgGetErrorString(...)
  PREINIT:  
    SV* err;
  PPCODE:
    EXTEND (SP,1);
    err = get_sv(ERROR_STORE,1);
    if (err == 0) {
      PUSHs (sv_2mortal(newSVpv("",1)));
    } else {
      PUSHs (sv_2mortal(newSVpv(cgGetErrorString(SvIV(err)),0)));
      sv_setiv(err, 0);
    }

void 
cgGetLastListing(...)
  PREINIT:
    CGcontext context;
    char* listing;
  PPCODE:
    EXTEND (SP,1);
    if (items != 1) {
      warn ("Usage: cgGetLatestProfile($context)");
      PUSHs (&PL_sv_undef);
      return;
    }
    context = INT2PTR(CGcontext, SvIV(ST(0)));
    listing = (char *) cgGetLastListing(context);
    if (listing) {
      PUSHs (sv_2mortal(newSVpv(listing,0)));
    } else {
      PUSHs (&PL_sv_undef);
    }

void
cgGetLatestProfile(...)
  PREINIT:
    CGerror err;
    CGprofile profile;
  PPCODE:
    EXTEND (SP,1);
    if (items != 1) {
      warn ("Usage: cgGetLatestProfile($profile_type)");
      PUSHs (&PL_sv_undef);
      return;
    }
    profile = cgGLGetLatestProfile(SvIV(ST(0)));
    PUSHs (sv_2mortal(newSViv(PTR2IV(profile))));

void
cgGetNamedParameter (...)
  PREINIT:
    char *param_name;
    CGprogram program;
    CGparameter param;
    CGerror err;
  PPCODE:
    EXTEND (SP,1);
    if (items != 2) {
      warn ("Usage: $param= cgGetNamedParameter($program,$param_name)");
      PUSHs (&PL_sv_undef);
      return;
    }
    program = INT2PTR(CGprogram, SvIV(ST(0)));
    param_name = SvPV_nolen(ST(1));
    param = cgGetNamedParameter(program,param_name);
    if (err = cgGetError()) {
      sv_setiv(get_sv(ERROR_STORE,1),PTR2IV(err));
      PUSHs (&PL_sv_undef);
    } else {
      PUSHs (sv_2mortal(newSViv(PTR2IV(param))));
    }
    
void
cgGetProfileString (...)
  PREINIT:
    int profile;
  PPCODE:
    EXTEND (SP,1);
    if (items != 1) {
      warn ("Usage: $profile_string= cgGetProfileString($profile)");
      PUSHs (&PL_sv_undef);
      return;
    }
    profile = SvIV(ST(0));
    PUSHs (sv_2mortal(newSVpv(cgGetProfileString(profile),0)));

void
cgIsProfileSupported (...)
  PPCODE:
    EXTEND (SP,1);
    if (items != 1) {
      warn ("Usage: $support = cgIsProfileSupported($profile)");
      PUSHs (&PL_sv_undef);
      return;
    }
    if (cgGLIsProfileSupported(SvNV(ST(0)))) {
      PUSHs (&PL_sv_yes);
    } else {
      PUSHs (&PL_sv_undef);
    };

void 
cgLoadProgram (...)
  PREINIT:
    CGprogram program;
    CGerror err;
  PPCODE:
    EXTEND (SP,1);
    if (items != 1) {
      warn ("Usage: cgLoadProgram($program)");
      PUSHs (&PL_sv_undef);
      return;
    }
    program = INT2PTR(CGprogram, SvIV(ST(0)));
    cgGLLoadProgram(program);
    if (err = cgGetError()) { 
      sv_setiv(get_sv(ERROR_STORE,1),PTR2IV(err));

lib/SDL/OpenGL/Cg.xs  view on Meta::CPAN

      PUSHs (&PL_sv_yes);
    }

void
cgSetMatrixParameterc (...)
  PREINIT:
    double values[16];
    CGparameter param;
    CGerror err;
    int i;
  PPCODE:
    EXTEND (SP,1);
    if (items != 17) {
      warn ("For now cgSetMatrixParameter only supports 4x4 matrix");
      PUSHs (&PL_sv_undef);
      return;
    }
    for (i=1; i<items; i++) {
      values[i-1] = SvNV(ST(i));
    }
    param = INT2PTR(CGparameter, SvIV(ST(0)));

lib/SDL/OpenGL/Cg.xs  view on Meta::CPAN

      PUSHs (sv_2mortal(newSViv(PTR2IV(param))));
    }

void
cgSetMatrixParameterr (...)
  PREINIT:
    double values[16];
    CGparameter param;
    CGerror err;
    int i;
  PPCODE:
    EXTEND (SP,1);
    if (items != 17) {
      warn ("For now cgSetMatrixParameter only supports 4x4 matrix");
      PUSHs (&PL_sv_undef);
      return;
    }
    for (i=1; i<items; i++) {
      values[i-1] = SvNV(ST(i));
      printf ("Param %d = %f\n", i, values[i-1]); 
    }

lib/SDL/OpenGL/Cg.xs  view on Meta::CPAN

      PUSHs (&PL_sv_undef);
    } else {
      PUSHs (sv_2mortal(newSViv(PTR2IV(param))));
    }

void
cgSetParameter (...)
  PREINIT:
    CGparameter param;
    CGerror err;
  PPCODE:
    // TODO: Modify so it's not only the 4 param version. 
    EXTEND (SP,1);
    if (items<2 || items>5) {
       warn("Usage: cgSetParameter($param, $val1) OR");
       warn("Usage: cgSetParameter($param, $val1, $val2) OR");
       warn("Usage: cgSetParameter($param, $val1, $val2, $val3) OR");
       warn("Usage: cgSetParameter($param, $val1, $val2, $val3, $val4)");
       PUSHs (&PL_sv_undef);
       return;
    }

lib/SDL/OpenGL/Cg.xs  view on Meta::CPAN

      PUSHs (&PL_sv_yes);
    }
   
void
cgSetStateMatrixParameter(...)
  PREINIT:
    CGparameter param;
    CGGLenum matrix;
    CGGLenum transform;
    CGerror err;
  PPCODE:
    EXTEND (SP,1);
    if (items < 2 || items > 3) {
      warn ("Usage: cgSetStateMatrixParameter($param,$matrix,$transform)");
      PUSHs (&PL_sv_undef);
      return;
    }
    param = INT2PTR(CGparameter, SvIV(ST(0)));
    matrix = SvIV(ST(1));
    if (items == 3) {
      transform = SvIV(ST(2));



( run in 0.484 second using v1.01-cache-2.11-cpan-5511b514fd6 )