CgEffect::CgEffect(CGcontext context, const char* sourceCode) : effect(NULL), context(context), activeTechnique(NULL), currentPass(NULL), nextPass(NULL) { effect = cgCreateEffect(context, sourceCode, NULL); CGerror error; const char* errorStr = cgGetLastErrorString(&error); if(error) throw new GeexShaderException("CG Effect creation failed", errorStr); }
void Effect::load(const char* code) { effect.reset(cgCreateEffect(context, code, 0), EffectDeleter()); if (!effect) { throw std::runtime_error("Could not create effect"); } technique = cgGetNamedTechnique(effect.get(), "High"); if (technique == 0) { throw std::runtime_error("Technique not found"); } if (cgValidateTechnique(technique) == false) { throw std::runtime_error("Technique not valid"); } }