|
|
初学HLSL,有一问题请教:
有一汽车x模型文件,其材质数为4(轮胎材质颜色为黑色,车头灯颜色为黄色,车窗白色,车身为绿色)。
如果在固定流水线中用
for(int i = 0; i < g_MtrlNum; i++)
{
pD3Ddevice->SetMaterial(&Mtrls);
g_pMesh->DrawSubset(i);
}
用shader代替固定流水线部分,那么:
for(int i = 0; i < g_dwNumMtrl; i++)
{
// 在这里如何将所有材质颜色传入顶点渲染器,是用SetVectorArray吗?如:
g_ColorMesh.x = g_pMtrlMesh.Diffuse.r;
g_ColorMesh.y = g_pMtrlMesh.Diffuse.g;
g_ColorMesh.z = g_pMtrlMesh.Diffuse.b;
g_ColorMesh.w = g_pMtrlMesh.Diffuse.a;
g_pEffect->SetVectorArray("Color", &g_ColorMesh, g_dwNumMtrl);
g_pMesh->DrawSubset(i);
}
在顶点渲染器内如何输出这些材质颜色?
VS_OUTPUT_CT Main(VS_INPUT_CT Input_CT)
{
//略
Output.diffuse = (这里怎么写?)
reutrn Output;
} |
|