|
|
我想?算?入Pixel Shader的次??然後在C++中印出???次??我用ID3DXEffect的GetInt去?得???在Shader中的整??但是?得的值都是等於我用ID3DXEffect的SetInt去?定的初始值.
- int m_nSM_0_Light_Area;
- D3DXHANDLE m_hSM_0_Light_Area;
- m_hSM_0_Light_Area = g_pEffect_ASM->GetParameterByName(NULL, "SM_0_Light_Area");
- g_pEffect_ASM->SetInt(m_hSM_0_Light_Area, 0);
- D3DMATERIAL9 *pMtrl;
- pMtrl = m_MeshShip.m_pMaterials;
- IDirect3DBaseTexture9** ppTexArray=m_MeshShip.m_pTextures;
- for(unsigned int i=0; i<m_MeshShip.m_dwNumMaterials; i++)
- {
- vTemp.x = pMtrl->Diffuse.r;
- vTemp.y = pMtrl->Diffuse.g;
- vTemp.z = pMtrl->Diffuse.b;
- vTemp.w = pMtrl->Diffuse.a;
- if(m_hMaterialColor_ASM != NULL)
- {
- g_pEffect_ASM->SetVector(m_hMaterialColor_ASM, &vTemp);
- }
- if (ppTexArray[i]==NULL)
- {
- HRESULT hr;
- hr=g_pEffect_ASM->SetBool(m_hUseDiffuseTexture_ASM,FALSE);
- }
- else
- {
- HRESULT hr;
- hr=g_pEffect_ASM->SetTexture("DiffuseTexture", ppTexArray[i]);
- hr=g_pEffect_ASM->SetBool(m_hUseDiffuseTexture_ASM,TRUE);
- }
- g_pEffect_ASM->CommitChanges();
- m_MeshShip.GetLocalMesh()->DrawSubset(i);
- pMtrl++;
- }
- g_pEffect_ASM->GetInt(m_hSM_0_Light_Area,&m_nSM_0_Light_Area);
复制代码
// shader code
- extern int SM_0_Light_Area;
- float4 PSScene(VS_OUTPUT In) : COLOR
- {
- SM_0_Light_Area++;
- return float4(1,0,0,1);
- }
复制代码 |
|