📄 fftcg.cpp
字号:
DispTexR1 = cgGetNamedParameter(dfProgram, "Real1");
CheckCgError();
DispTexI1 = cgGetNamedParameter(dfProgram, "Imag1");
CheckCgError();
DispTexR2 = cgGetNamedParameter(dfProgram, "Real2");
CheckCgError();
DispTexI2 = cgGetNamedParameter(dfProgram, "Imag2");
CheckCgError();
DispInvEnergy = cgGetNamedParameter(dfProgram, "InvEnergy");
CheckCgError();
}
}
/*************************[MAN-BEG]*****************************************
*
* NAME:
* FFT::CheckCgError
*
* DESCRIPTION:
* Check for Cg errors
*
* FORMAL PARAMETERS:
* none
*
* RETURNS:
* none
*
* REVISION HISTORY:
* Rev When Who What
* V1 15Dec2004 Thilaka Created.
**************************[MAN-END]*****************************************/
void FFT::CheckCgError(void)
{
CGerror err = cgGetError();
if (err != CG_NO_ERROR) {
cerr << "CG error: " << cgGetErrorString(err) << endl;
exit(1);
}
}
/*************************[MAN-BEG]*****************************************
*
* NAME:
* FFT::EnableFFTFragmentProgramX
*
* DESCRIPTION:
* Enable all fragment programs for x FFT depending on the method
*
* FORMAL PARAMETERS:
* none
*
* RETURNS:
* none
*
* REVISION HISTORY:
* Rev When Who What
* V1 15Dec2004 Thilaka Created.
**************************[MAN-END]*****************************************/
void FFT::EnableFFTFragmentProgramX(void)
{
cgGLEnableProfile(xfProfile);
CheckCgError();
if (CurrentButterflyStage < xCutOff) {
cgGLBindProgram(xfProgram1);
CheckCgError();
cgGLEnableTextureParameter(xBaseTexR1_1);
CheckCgError();
cgGLEnableTextureParameter(xBaseTexI1_1);
CheckCgError();
cgGLEnableTextureParameter(xBaseTexR2_1);
CheckCgError();
cgGLEnableTextureParameter(xBaseTexI2_1);
CheckCgError();
cgGLEnableTextureParameter(xButterflyLookupI_1);
CheckCgError();
cgGLEnableTextureParameter(xButterflyLookupWR_1);
CheckCgError();
cgGLEnableTextureParameter(xButterflyLookupWI_1);
CheckCgError();
}
else {
cgGLBindProgram(xfProgram2);
CheckCgError();
cgGLEnableTextureParameter(xBaseTexR1_2);
CheckCgError();
cgGLEnableTextureParameter(xBaseTexI1_2);
CheckCgError();
cgGLEnableTextureParameter(xBaseTexR2_2);
CheckCgError();
cgGLEnableTextureParameter(xBaseTexI2_2);
CheckCgError();
}
}
/*************************[MAN-BEG]*****************************************
*
* NAME:
* FFT::DisableFFTFragmentProgramX
*
* DESCRIPTION:
* Disables all fragment programs for x FFT depending on the method
*
* FORMAL PARAMETERS:
* none
*
* RETURNS:
* none
*
* REVISION HISTORY:
* Rev When Who What
* V1 15Dec2004 Thilaka Created.
**************************[MAN-END]*****************************************/
void FFT::DisableFFTFragmentProgramX(void)
{
if (CurrentButterflyStage < xCutOff) {
cgGLDisableTextureParameter(xBaseTexR1_1);
CheckCgError();
cgGLDisableTextureParameter(xBaseTexI1_1);
CheckCgError();
cgGLDisableTextureParameter(xBaseTexR2_1);
CheckCgError();
cgGLDisableTextureParameter(xBaseTexI2_1);
CheckCgError();
cgGLDisableTextureParameter(xButterflyLookupI_1);
CheckCgError();
cgGLDisableTextureParameter(xButterflyLookupWR_1);
CheckCgError();
cgGLDisableTextureParameter(xButterflyLookupWI_1);
CheckCgError();
}
else {
cgGLDisableTextureParameter(xBaseTexR1_2);
CheckCgError();
cgGLDisableTextureParameter(xBaseTexI1_2);
CheckCgError();
cgGLDisableTextureParameter(xBaseTexR2_2);
CheckCgError();
cgGLDisableTextureParameter(xBaseTexI2_2);
CheckCgError();
}
cgGLDisableProfile(xfProfile);
CheckCgError();
}
/*************************[MAN-BEG]*****************************************
*
* NAME:
* FFT::InitCgPrograms
*
* DESCRIPTION:
* Initialize all shaders
*
* FORMAL PARAMETERS:
* none
*
* RETURNS:
* none
*
* REVISION HISTORY:
* Rev When Who What
* V1 15Dec2004 Thilaka Created.
**************************[MAN-END]*****************************************/
void FFT::InitCgPrograms(void)
{
Context = cgCreateContext();
CheckCgError();
InitFFTFragmentCgX1();
InitFFTFragmentCgX2();
InitFFTFragmentCgY1();
InitFFTFragmentCgY2();
InitDispFragmentCg();
}
/*************************[MAN-BEG]*****************************************
*
* NAME:
* FFT::DestroyCgPrograms
*
* DESCRIPTION:
* Destroy all shaders
*
* FORMAL PARAMETERS:
* none
*
* RETURNS:
* none
*
* REVISION HISTORY:
* Rev When Who What
* V1 15Dec2004 Thilaka Created.
**************************[MAN-END]*****************************************/
void FFT::DestroyCgPrograms(void)
{
cgDestroyProgram(xfProgram2);
cgDestroyProgram(yfProgram2);
cgDestroyProgram(xfProgram1);
cgDestroyProgram(yfProgram1);
cgDestroyProgram(dfProgram);
cgDestroyContext(Context);
}
/*************************[MAN-BEG]*****************************************
*
* NAME:
* FFT::EnableFFTFragmentProgramY
*
* DESCRIPTION:
* Enable all fragment programs for y FFT depending on the method
*
* FORMAL PARAMETERS:
* none
*
* RETURNS:
* none
*
* REVISION HISTORY:
* Rev When Who What
* V1 15Dec2004 Thilaka Created.
**************************[MAN-END]*****************************************/
void FFT::EnableFFTFragmentProgramY(void)
{
cgGLEnableProfile(yfProfile);
CheckCgError();
if (CurrentButterflyStage < yCutOff) {
cgGLBindProgram(yfProgram1);
CheckCgError();
cgGLEnableTextureParameter(yBaseTexR1_1);
CheckCgError();
cgGLEnableTextureParameter(yBaseTexI1_1);
CheckCgError();
cgGLEnableTextureParameter(yBaseTexR2_1);
CheckCgError();
cgGLEnableTextureParameter(yBaseTexI2_1);
CheckCgError();
cgGLEnableTextureParameter(yButterflyLookupI_1);
CheckCgError();
cgGLEnableTextureParameter(yButterflyLookupWR_1);
CheckCgError();
cgGLEnableTextureParameter(yButterflyLookupWI_1);
CheckCgError();
}
else {
cgGLBindProgram(yfProgram2);
CheckCgError();
cgGLEnableTextureParameter(yBaseTexR1_2);
CheckCgError();
cgGLEnableTextureParameter(yBaseTexI1_2);
CheckCgError();
cgGLEnableTextureParameter(yBaseTexR2_2);
CheckCgError();
cgGLEnableTextureParameter(yBaseTexI2_2);
CheckCgError();
}
}
/*************************[MAN-BEG]*****************************************
*
* NAME:
* FFT::DisableFFTFragmentProgramY
*
* DESCRIPTION:
* Disables all fragment programs for y FFT depending on the method
*
* FORMAL PARAMETERS:
* none
*
* RETURNS:
* none
*
* REVISION HISTORY:
* Rev When Who What
* V1 15Dec2004 Thilaka Created.
**************************[MAN-END]*****************************************/
void FFT::DisableFFTFragmentProgramY(void)
{
if (CurrentButterflyStage < yCutOff) {
cgGLDisableTextureParameter(yBaseTexR1_1);
CheckCgError();
cgGLDisableTextureParameter(yBaseTexI1_1);
CheckCgError();
cgGLDisableTextureParameter(yBaseTexR2_1);
CheckCgError();
cgGLDisableTextureParameter(yBaseTexI2_1);
CheckCgError();
cgGLDisableTextureParameter(yButterflyLookupI_1);
CheckCgError();
cgGLDisableTextureParameter(yButterflyLookupWR_1);
CheckCgError();
cgGLDisableTextureParameter(yButterflyLookupWI_1);
CheckCgError();
}
else {
cgGLDisableTextureParameter(yBaseTexR1_2);
CheckCgError();
cgGLDisableTextureParameter(yBaseTexI1_2);
CheckCgError();
cgGLDisableTextureParameter(yBaseTexR2_2);
CheckCgError();
cgGLDisableTextureParameter(yBaseTexI2_2);
CheckCgError();
}
cgGLDisableProfile(yfProfile);
CheckCgError();
}
/*************************[MAN-BEG]*****************************************
*
* NAME:
* FFT::EnableDispFragmentProgram
*
* DESCRIPTION:
* Enables the fragment program for displaying the result.
*
* FORMAL PARAMETERS:
* none
*
* RETURNS:
* none
*
* REVISION HISTORY:
* Rev When Who What
* V1 15Dec2004 Thilaka Created.
**************************[MAN-END]*****************************************/
void FFT::EnableDispFragmentProgram(void)
{
cgGLEnableProfile(dfProfile);
CheckCgError();
cgGLBindProgram(dfProgram);
CheckCgError();
cgGLEnableTextureParameter(DispTexR1);
CheckCgError();
cgGLEnableTextureParameter(DispTexI1);
CheckCgError();
cgGLEnableTextureParameter(DispTexR2);
CheckCgError();
cgGLEnableTextureParameter(DispTexI2);
CheckCgError();
}
/*************************[MAN-BEG]*****************************************
*
* NAME:
* FFT::DisableDispFragmentProgram
*
* DESCRIPTION:
* Disables the fragment program for displaying the result.
*
* FORMAL PARAMETERS:
* none
*
* RETURNS:
* none
*
* REVISION HISTORY:
* Rev When Who What
* V1 15Dec2004 Thilaka Created.
**************************[MAN-END]*****************************************/
void FFT::DisableDispFragmentProgram(void)
{
cgGLDisableTextureParameter(DispTexR1);
CheckCgError();
cgGLDisableTextureParameter(DispTexI1);
CheckCgError();
cgGLDisableTextureParameter(DispTexR2);
CheckCgError();
cgGLDisableTextureParameter(DispTexI2);
CheckCgError();
cgGLDisableProfile(dfProfile);
CheckCgError();
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -