📄 main.cpp
字号:
bool RenderFit(LPDIRECT3DSURFACE9 &pSurface,LPDIRECT3DVERTEXBUFFER9 &pBuffer,char * strTechName)
{
UINT nPasses;
if(g_pD3DDevice->SetRenderTarget(0,pSurface)!= D3D_OK )
MessageBox(NULL,"Failed!","Info",IDOK);
g_pD3DDevice->Clear(0, 0, D3DCLEAR_TARGET, D3DCOLOR_XRGB(255, 255, 255), 1.0f, 0);
g_pD3DDevice->BeginScene();
g_pD3DDevice->SetFVF(D3DFVF_CUSTOMVERTEX);
g_pD3DDevice->SetStreamSource(0, pBuffer,0, sizeof(CUSTOMVERTEX));
D3DXHANDLE hTechnique = g_pEffect->GetTechniqueByName( strTechName );
g_pEffect->SetTechnique( hTechnique );
g_pEffect->SetTexture("ColorMapGene1", g_pResultGeneTexture[0]);
g_pEffect->SetTexture("ColorMapGene2", g_pResultGeneTexture[1]);
g_pEffect->Begin( &nPasses, 0 );
g_pEffect->BeginPass(0);
g_pD3DDevice->DrawPrimitive(D3DPT_TRIANGLESTRIP, 0, 2);
g_pEffect->EndPass();
g_pEffect->End();
g_pD3DDevice->EndScene();
return true;
}
bool RenderFit()
{
if(FUCTION == FUCTION_1)
RenderFit(g_pFitSurface,g_pBuffer,"TShader_Fit_1");
else
RenderFit(g_pFitSurface,g_pBuffer,"TShader_Fit_2");
return true;
}
bool RenderBestSub(int Width, int Height,LPDIRECT3DTEXTURE9 &pTexture,char * strTechName)
{
UINT nPasses;
int pw,ph;
int CurrentTextureNum = 0;
int k = EdgeRecord[0];
int i = 0;
while(k > 0)
{
g_pD3DDevice->SetRenderTarget(0,g_pSubSurface[i]);
g_pD3DDevice->Clear(0, NULL, D3DCLEAR_TARGET, D3DCOLOR_XRGB(255, 255, 255), 1.0f, 0);
g_pD3DDevice->BeginScene();
g_pD3DDevice->SetFVF(D3DFVF_CUSTOMVERTEX);
g_pD3DDevice->SetStreamSource(0, g_pSubBuffer[i],0, sizeof(CUSTOMVERTEX));
D3DXHANDLE hTechnique = g_pEffect->GetTechniqueByName( strTechName );
g_pEffect->SetTechnique( hTechnique );
if(CurrentTextureNum == 0)
{
g_pEffect->SetTexture("ColorMapSub", pTexture);
CurrentTextureNum = 1;
pw = Width;
ph = Height;
}
else
{
g_pEffect->SetTexture("ColorMapSub", g_pSubTexture[i - 1]);
pw = EdgeRecord[i - 1];
ph = EdgeRecord[i - 1];
}
g_pEffect->SetFloat("pw",(float)(1.0/(pw)));
g_pEffect->SetFloat("ph",(float)(1.0 /(ph)));
g_pEffect->Begin( &nPasses, 0 );
g_pEffect->BeginPass( 0 );
g_pD3DDevice->DrawPrimitive(D3DPT_TRIANGLESTRIP, 0, 2);
g_pEffect->EndPass();
g_pEffect->End();
g_pD3DDevice->EndScene();
i++;
k = EdgeRecord[i];
}
return true;
}
bool RenderBestGene(LPDIRECT3DSURFACE9 &pSurface,int i,LPDIRECT3DVERTEXBUFFER9 &pBuffer,char * strTechName)
{
UINT nPasses;
if(g_pD3DDevice->SetRenderTarget(0,pSurface)!= D3D_OK )
MessageBox(NULL,"Failed!","Info",IDOK);
g_pD3DDevice->Clear(0, 0, D3DCLEAR_TARGET, D3DCOLOR_XRGB(255, 255, 255), 1.0f, 0);
g_pD3DDevice->BeginScene();
g_pD3DDevice->SetFVF(D3DFVF_CUSTOMVERTEX);
g_pD3DDevice->SetStreamSource(0, pBuffer,0, sizeof(CUSTOMVERTEX));
D3DXHANDLE hTechnique = g_pEffect->GetTechniqueByName( strTechName );
g_pEffect->SetTechnique( hTechnique );
g_pEffect->SetTexture("ColorMapBestGene", g_pBestGene[i]);
g_pEffect->SetTexture("ColorMapGene", g_pResultGeneTexture[i]);
g_pEffect->SetTexture("ColorMapBestFit", g_pSubTexture[Num-1]);
g_pEffect->SetTexture("ColorMapBestFitSave", g_pResultBestFitTexture);
g_pEffect->Begin( &nPasses, 0 );
g_pEffect->BeginPass(0);
g_pD3DDevice->DrawPrimitive(D3DPT_TRIANGLESTRIP, 0, 2);
g_pEffect->EndPass();
g_pEffect->End();
g_pD3DDevice->EndScene();
return true;
}
bool RenderBestFit(LPDIRECT3DSURFACE9 &pSurface,LPDIRECT3DVERTEXBUFFER9 &pBuffer,char * strTechName)
{
UINT nPasses;
if(g_pD3DDevice->SetRenderTarget(0,pSurface)!= D3D_OK )
MessageBox(NULL,"Failed!","Info",IDOK);
g_pD3DDevice->Clear(0, 0, D3DCLEAR_TARGET, D3DCOLOR_XRGB(255, 255, 255), 1.0f, 0);
g_pD3DDevice->BeginScene();
g_pD3DDevice->SetFVF(D3DFVF_CUSTOMVERTEX);
g_pD3DDevice->SetStreamSource(0, pBuffer,0, sizeof(CUSTOMVERTEX));
D3DXHANDLE hTechnique = g_pEffect->GetTechniqueByName( strTechName );
g_pEffect->SetTechnique( hTechnique );
g_pEffect->SetTexture("ColorMapBestFit", g_pSubTexture[Num-1]);
g_pEffect->SetTexture("ColorMapBestFitSave", g_pResultBestFitTexture);
g_pEffect->Begin( &nPasses, 0 );
g_pEffect->BeginPass(0);
g_pD3DDevice->DrawPrimitive(D3DPT_TRIANGLESTRIP, 0, 2);
g_pEffect->EndPass();
g_pEffect->End();
g_pD3DDevice->EndScene();
return true;
}
bool RenderBestFit()
{
if(g_pResultBestFitTexture == g_pBestFitTexture1)
{
RenderBestFit(g_pBestFitSurface2,g_pBestBuffer,"TShader_BestFit");
g_pResultBestFitTexture = g_pBestFitTexture2;
}
else
{
RenderBestFit(g_pBestFitSurface1,g_pBestBuffer,"TShader_BestFit");
g_pResultBestFitTexture = g_pBestFitTexture1;
}
return true;
}
bool RenderBest()
{
RenderBestSub(g_nWidth,g_nHeight,g_pFitTexture,"TShader_Sub");
for(int i = 0 ; i < DIM / 4 ; i++)
{
if(g_pBestGene[i] == g_pBestGeneTexture1[i])
{
RenderBestGene(g_pBestGeneSurface2[i],0,g_pBestBuffer,"TShader_BestGene");
g_pBestGene[i] = g_pBestGeneTexture2[i];
}
else
{
RenderBestGene(g_pBestGeneSurface1[i],0,g_pBestBuffer,"TShader_BestGene");
g_pBestGene[i] = g_pBestGeneTexture1[i];
}
}
RenderBestFit();
return true;
}
bool RenderSelectCtr(LPDIRECT3DSURFACE9 &pSurface,LPDIRECT3DVERTEXBUFFER9 &pBuffer,char * strTechName)
{
UINT nPasses;
float offset1[2],offset2[2];
offset1[0] = (float)(rand()/(double)RAND_MAX);
offset1[1] = (float)(rand()/(double)RAND_MAX);
offset2[0] = (float)(rand()/(double)RAND_MAX);
offset2[1] = (float)(rand()/(double)RAND_MAX);
if(g_pD3DDevice->SetRenderTarget(0,pSurface)!= D3D_OK )
MessageBox(NULL,"Failed!","Info",IDOK);
g_pD3DDevice->Clear(0, 0, D3DCLEAR_TARGET, D3DCOLOR_XRGB(255, 255, 255), 1.0f, 0);
g_pD3DDevice->BeginScene();
g_pD3DDevice->SetFVF(D3DFVF_CUSTOMVERTEX);
g_pD3DDevice->SetStreamSource(0, pBuffer,0, sizeof(CUSTOMVERTEX));
D3DXHANDLE hTechnique = g_pEffect->GetTechniqueByName( strTechName );
g_pEffect->SetTechnique( hTechnique );
g_pEffect->SetFloat("dw",(float)(1.0/g_nWidth));
g_pEffect->SetFloat("dh",(float)(1.0/g_nHeight));
g_pEffect->SetFloatArray("offset1",offset1,2);
g_pEffect->SetFloatArray("offset2",offset2,2);
g_pEffect->SetTexture("ColorMapRand", g_pRandTexture);
g_pEffect->SetTexture("ColorMapFit", g_pFitTexture);
g_pEffect->Begin( &nPasses, 0 );
g_pEffect->BeginPass(0);
g_pD3DDevice->DrawPrimitive(D3DPT_TRIANGLESTRIP, 0, 2);
g_pEffect->EndPass();
g_pEffect->End();
g_pD3DDevice->EndScene();
return true;
}
bool RenderSelect(LPDIRECT3DSURFACE9 &pSurface,int i,LPDIRECT3DVERTEXBUFFER9 &pBuffer,char * strTechName)
{
UINT nPasses;
if(g_pD3DDevice->SetRenderTarget(0,pSurface)!= D3D_OK )
MessageBox(NULL,"Failed!","Info",IDOK);
g_pD3DDevice->Clear(0, 0, D3DCLEAR_TARGET, D3DCOLOR_XRGB(255, 255, 255), 1.0f, 0);
g_pD3DDevice->BeginScene();
g_pD3DDevice->SetFVF(D3DFVF_CUSTOMVERTEX);
g_pD3DDevice->SetStreamSource(0, pBuffer,0, sizeof(CUSTOMVERTEX));
D3DXHANDLE hTechnique = g_pEffect->GetTechniqueByName( strTechName );
g_pEffect->SetTechnique( hTechnique );
g_pEffect->SetTexture("ColorMapSelCtr", g_pSelCtrTexture);
g_pEffect->SetTexture("ColorMapGene", g_pResultGeneTexture[i]);
g_pEffect->Begin( &nPasses, 0 );
g_pEffect->BeginPass(0);
g_pD3DDevice->DrawPrimitive(D3DPT_TRIANGLESTRIP, 0, 2);
g_pEffect->EndPass();
g_pEffect->End();
g_pD3DDevice->EndScene();
return true;
}
bool RenderSelect()
{
RenderSelectCtr(g_pSelCtrSurface,g_pBuffer,"TShader_SelCtr");
for(int i = 0 ; i < DIM / 4 ; i++)
{
if(g_pResultGeneTexture[i] == g_pGeneTexture1[i])
{
RenderSelect(g_pGeneSurface2[i],i,g_pBuffer,"TShader_Sel");
g_pResultGeneTexture[i] = g_pGeneTexture2[i];
}
else
{
RenderSelect(g_pGeneSurface1[i],i,g_pBuffer,"TShader_Sel");
g_pResultGeneTexture[i] = g_pGeneTexture1[i];
}
}
return true;
}
bool RenderCrossCtr(LPDIRECT3DSURFACE9 &pSurface,LPDIRECT3DVERTEXBUFFER9 &pBuffer,char * strTechName)
{
UINT nPasses;
float offset1[2],offset2[2];
offset1[0] = (float)(rand()/(double)RAND_MAX);
offset1[1] = (float)(rand()/(double)RAND_MAX);
offset2[0] = (float)(rand()/(double)RAND_MAX);
offset2[1] = (float)(rand()/(double)RAND_MAX);
if(g_pD3DDevice->SetRenderTarget(0,pSurface)!= D3D_OK )
MessageBox(NULL,"Failed!","Info",IDOK);
g_pD3DDevice->Clear(0, 0, D3DCLEAR_TARGET, D3DCOLOR_XRGB(255, 255, 255), 1.0f, 0);
g_pD3DDevice->BeginScene();
g_pD3DDevice->SetFVF(D3DFVF_CUSTOMVERTEX);
g_pD3DDevice->SetStreamSource(0, pBuffer,0, sizeof(CUSTOMVERTEX));
D3DXHANDLE hTechnique = g_pEffect->GetTechniqueByName( strTechName );
g_pEffect->SetTechnique( hTechnique );
g_pEffect->SetTexture("ColorMapRand", g_pRandTexture);
g_pEffect->SetTexture("ColorMapPos", g_pPosTexture);
g_pEffect->SetFloat("pCross",g_pCross);
g_pEffect->SetFloatArray("offset1",offset1,2);
g_pEffect->SetFloatArray("offset2",offset2,2);
g_pEffect->Begin( &nPasses, 0 );
g_pEffect->BeginPass(0);
g_pD3DDevice->DrawPrimitive(D3DPT_TRIANGLESTRIP, 0, 2);
g_pEffect->EndPass();
g_pEffect->End();
g_pD3DDevice->EndScene();
return true;
}
bool RenderCross(LPDIRECT3DSURFACE9 &pSurface,int i, LPDIRECT3DVERTEXBUFFER9 &pBuffer,char * strTechName)
{
UINT nPasses;
if(g_pD3DDevice->SetRenderTarget(0,pSurface)!= D3D_OK )
MessageBox(NULL,"Failed!","Info",IDOK);
g_pD3DDevice->Clear(0, 0, D3DCLEAR_TARGET, D3DCOLOR_XRGB(255, 255, 255), 1.0f, 0);
g_pD3DDevice->BeginScene();
g_pD3DDevice->SetFVF(D3DFVF_CUSTOMVERTEX);
g_pD3DDevice->SetStreamSource(0, pBuffer,0, sizeof(CUSTOMVERTEX));
D3DXHANDLE hTechnique = g_pEffect->GetTechniqueByName( strTechName );
g_pEffect->SetTechnique( hTechnique );
g_pEffect->SetTexture("ColorMapGene", g_pResultGeneTexture[i]);
g_pEffect->SetTexture("ColorMapCrossCtr", g_pCrsCtrTexture);
g_pEffect->SetFloat("dw",(float)(1.0/g_nWidth));
g_pEffect->Begin( &nPasses, 0 );
g_pEffect->BeginPass(0);
g_pD3DDevice->DrawPrimitive(D3DPT_TRIANGLESTRIP, 0, 2);
g_pEffect->EndPass();
g_pEffect->End();
g_pD3DDevice->EndScene();
return true;
}
bool RenderCross()
{
for(int i = 0 ; i < DIM / 4 ; i++)
{
RenderCrossCtr(g_pCrsCtrSurface,g_pCrossCtrBuffer,"TShader_CrossCtr");
if(g_pResultGeneTexture[i] == g_pGeneTexture1[i])
{
RenderCross(g_pGeneSurface2[i],i,g_pBuffer,"TShader_Cross");
g_pResultGeneTexture[i] = g_pGeneTexture2[i];
}
else
{
RenderCross(g_pGeneSurface1[i],i,g_pBuffer,"TShader_Cross");
g_pResultGeneTexture[i] = g_pGeneTexture1[i];
}
}
return true;
}
bool RenderMutation(LPDIRECT3DSURFACE9 &pSurface,int i, LPDIRECT3DVERTEXBUFFER9 &pBuffer,char * strTechName)
{
UINT nPasses;
float offset1[2],offset2[2];
offset1[0] = (float)(rand()/(double)RAND_MAX);
offset1[1] = (float)(rand()/(double)RAND_MAX);
offset2[0] = (float)(rand()/(double)RAND_MAX);
offset2[1] = (float)(rand()/(double)RAND_MAX);
if(g_pD3DDevice->SetRenderTarget(0,pSurface)!= D3D_OK )
MessageBox(NULL,"Failed!","Info",IDOK);
g_pD3DDevice->Clear(0, 0, D3DCLEAR_TARGET, D3DCOLOR_XRGB(255, 255, 255), 1.0f, 0);
g_pD3DDevice->BeginScene();
g_pD3DDevice->SetFVF(D3DFVF_CUSTOMVERTEX);
g_pD3DDevice->SetStreamSource(0, pBuffer,0, sizeof(CUSTOMVERTEX));
D3DXHANDLE hTechnique = g_pEffect->GetTechniqueByName( strTechName );
g_pEffect->SetTechnique( hTechnique );
g_pEffect->SetTexture("ColorMapGene", g_pResultGeneTexture[i]);
g_pEffect->SetTexture("ColorMapRand", g_pRandTexture);
g_pEffect->SetFloat("pMutation",g_pMutation);
g_pEffect->SetFloatArray("offset1",offset1,2);
g_pEffect->SetFloatArray("offset2",offset2,2);
g_pEffect->Begin( &nPasses, 0 );
g_pEffect->BeginPass(0);
g_pD3DDevice->DrawPrimitive(D3DPT_TRIANGLESTRIP, 0, 2);
g_pEffect->EndPass();
g_pEffect->End();
g_pD3DDevice->EndScene();
return true;
}
bool RenderMutation()
{
for(int i = 0 ; i < DIM / 4 ; i++)
{
if(g_pResultGeneTexture[i] == g_pGeneTexture1[i])
{
RenderMutation(g_pGeneSurface2[i],i,g_pBuffer,"TShader_Mutation");
g_pResultGeneTexture[i] = g_pGeneTexture2[i];
}
else
{
RenderMutation(g_pGeneSurface1[i],i,g_pBuffer,"TShader_Mutation");
g_pResultGeneTexture[i] = g_pGeneTexture1[i];
}
}
return true;
}
void SaveResultTexture(float *data, int w,int h,LPDIRECT3DTEXTURE9 &pColorMap)
{
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -