/*------------------------------------------------------------------------- -------------------------------------------------------------------------*/ bool FilterBox::Initialize(int w, int h) { bufw = w; bufh = h; // // FBO // glGenFramebuffersEXT(2, fb); glGenTextures(2, textureID); glGenRenderbuffersEXT(1, &depth_rb); initRT(0, w, h); initRT(1, w, h); // // initialize depth renderbuffer // glBindRenderbufferEXT(GL_RENDERBUFFER_EXT, depth_rb); glRenderbufferStorageEXT(GL_RENDERBUFFER_EXT, GL_DEPTH_COMPONENT24, w, h); glFramebufferRenderbufferEXT(GL_FRAMEBUFFER_EXT, GL_DEPTH_ATTACHMENT_EXT, GL_RENDERBUFFER_EXT, depth_rb); CheckFramebufferStatus(); glBindFramebufferEXT(GL_FRAMEBUFFER_EXT, 0); // // CGFX things // cgContext = cgCreateContext(); cgGLRegisterStates(cgContext); std::string resolved_path; cgEffect = cgCreateEffectFromFile(cgContext, "data/shaders/FilterBox.cgfx", NULL); if(!cgEffect) { exit(0); const char * pszErrors = NULL; fprintf(stderr, "CgFx Parse error : %s", pszErrors); const char *listing = cgGetLastListing(cgContext); bValid = false; return false; } cgTechnique = cgGetNamedTechnique(cgEffect, "Filter"); cgPassFilterH = cgGetNamedPass(cgTechnique, "verticalPass"); cgPassFilterV = cgGetNamedPass(cgTechnique, "horizontalPass"); cgPassBlend = cgGetNamedPass(cgTechnique, "drawFinal"); cgBlendFactor = cgGetNamedEffectParameter(cgEffect, "blendFactor"); cgGlowFactor = cgGetNamedEffectParameter(cgEffect, "glowFactor"); srcSampler = cgGetNamedEffectParameter(cgEffect, "srcSampler"); tempSampler = cgGetNamedEffectParameter(cgEffect, "tempSampler"); finalSampler = cgGetNamedEffectParameter(cgEffect, "finalSampler"); verticalDir = cgGetNamedEffectParameter(cgEffect, "verticalDir"); horizontalDir = cgGetNamedEffectParameter(cgEffect, "horizontalDir"); cgGLSetParameter2f(verticalDir, 0,1.0f/(float)h); cgGLSetParameter2f(horizontalDir, 1.0f/(float)w, 0); bValid = true; return true; }
void CgfxRenderPassChunk::activate (DrawEnv *pEnv, UInt32 index) { updateGLMatricies(pEnv); if(!_mPass)_mPass = cgGetNamedPass(_mTechnique,_mName.c_str()); if(_mPass) cgSetPassState(_mPass); }
void Effect::load( const char *_name ) { pass = cgGetNamedPass( techniques, _name ); }