HLSL效果框架能簡化許多操作.這裏先不寫具體的效果框架的程序,在處理多光源光照的時候再整理.
下一章:效果框架-多種光源的多光源 疊加效果
這兒先列出效果框架的一個注意點:
在begin和end中間不建議設置着色器變量,雖然用CommitChanges()可強制傳入顯卡,但是太浪費性能,
調用默認的begin和end總是最好的.所以渲染框架如下:
for (int i = 0; i < 4; i++)//四個模型
{
WVPMatrix = m_WorldMatrices[i] * m_ViewMatrix * m_ProjMatrix;//世界觀察投影矩陣
m_NLightEffect->SetMatrix(m_WVPMatrixHandle, &WVPMatrix);//設置着色器 世界觀察投影矩陣
UINT numPass = 0;
//開始技術
m_NLightEffect->Begin(&numPass, 0);//在begin和end中間不建議設置着色器變量,要設置只能用CommitChanges()強制傳入
for (UINT j = 0; j < numPass; ++j)//pass個數
{
m_NLightEffect->BeginPass(j); //開始pass
m_Meshes[i]->DrawSubset(0); //繪製第i個模型
m_NLightEffect->EndPass(); //結束過程
}
//結束使用技術
m_NLightEffect->End();
}