Beispiel #1
0
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);
}
Beispiel #2
0
    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");
        }
    }