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(); 
}