www.pudn.com > GPUVision_5-13-05-2.zip > AddFilter.cpp
#include "AddFilter.h"
using namespace std;
AddFilter::AddFilter(float addNum) : GenericFilter(NULL){
_addNum = addNum;
assert(cgIsContext(_CGcontext));
cgGLEnableProfile(_fragmentProfile);
const char* strAdd =
"void main(float2 iCoords : TEX0,\n"
" uniform samplerRECT texture,\n"
" uniform float val,\n"
" out float4 oColor : COLOR) { \n"
" oColor = val+f4texRECT(texture, iCoords);}\n";
// cout << "strAdd"<_program);
cgDestroyProgram(this->_addTwoProgram);
}
void AddFilter::applyFilter(GPUVision *image1){
glClear(GL_COLOR_BUFFER_BIT);
cgGLBindProgram(_program);
cgGLSetTextureParameter(_textureParam, image1->IsReset()?image1->GetTextureID():image1->GetRenderedTextureID());
cgGLEnableTextureParameter(_textureParam);
cgGLSetParameter1f(_addValParam, _addNum);
cgGLEnableProfile(_fragmentProfile);
_DrawFull(image1->GetWidth(), image1->GetHeight());
cgGLDisableTextureParameter(_textureParam);
cgGLDisableProfile(_fragmentProfile);
image1->Flip();
}
void AddFilter::applyFilter(GPUVision *image1, GPUVision *image2){
glClear(GL_COLOR_BUFFER_BIT);
cgGLBindProgram(_addTwoProgram);
bool i1r = image1->IsReset();
if(i1r) {
bool ok = true;
}
bool i2r = image2->IsReset();
if(i2r) {
bool ok = true;
}
cgGLSetTextureParameter(_addTextureParam1, image1->IsReset()?image1->GetTextureID():image1->GetRenderedTextureID());
cgGLSetTextureParameter(_addTextureParam2, image2->IsReset()?image2->GetTextureID():image2->GetRenderedTextureID());
cgGLEnableTextureParameter(_addTextureParam1);
cgGLEnableTextureParameter(_addTextureParam2);
cgGLEnableProfile(_fragmentProfile);
_DrawFull(image1->GetWidth(), image1->GetHeight());
cgGLDisableTextureParameter(_addTextureParam1);
cgGLDisableTextureParameter(_addTextureParam2);
cgGLDisableProfile(_fragmentProfile);
image1->Flip();
}