|
|

楼主 |
发表于 2004-12-26 11:34:00
|
显示全部楼层
Re:D3D,Material,Light,颜色不同的茶壶???
灯光部分:
ZeroMemory(&d3dLight, sizeof(D3DLIGHT8));
d3dLight.Type = D3DLIGHT_POINT;
d3dLight.Diffuse.r = 0.8f;
d3dLight.Diffuse.g = 0.8f;
d3dLight.Diffuse.b = 0.8f;
d3dLight.Ambient.r = 0.0f;
d3dLight.Ambient.g = 0.0f;
d3dLight.Ambient.b = 0.0f;
d3dLight.Specular.r = 0.0f;
d3dLight.Specular.g = 0.0f;
d3dLight.Specular.b = 0.0f;
d3dLight.Position.x = 0.0f;
d3dLight.Position.y = 100.0f;
d3dLight.Position.z = -100.0f;
d3dLight.Attenuation0 = 1.0f;
d3dLight.Attenuation1 = 0.0f;
d3dLight.Attenuation2 = 0.0f;
d3dLight.Range = 500.0f;
//Assign the point light to our device in poisition (index) 0
g_pD3DDevice->SetLight(0, &d3dLight);
g_pD3DDevice->LightEnable(0, TRUE);
g_pD3DDevice->SetRenderState(D3DRS_LIGHTING, TRUE);
g_pD3DDevice->SetRenderState(D3DRS_AMBIENT, D3DCOLOR_XRGB(200, 200, 200));
D3DMCS_MATERIAL);
材质部分:
diffuseColor = {0.8941, 0.8392, 0.6}
ambientIntensity(0.2f);
emissiveColor(0.0f,0.0f,0.0f);
shininess(0.2f);
specularColor(0.0f,0.0f,0.0f);
transparency(0.0f);
float alpha = 1.0 - transparency->getValue();
Ambient.r = ambientIntensity->getValue()*(*diffuseColor)[0];
Ambient.g = ambientIntensity->getValue()*(*diffuseColor)[1];
Ambient.b = ambientIntensity->getValue()*(*diffuseColor)[2];
Ambient.a = alpha;
Diffuse.r = (*diffuseColor)[0];
Diffuse.g = (*diffuseColor)[1];
Diffuse.b = (*diffuseColor)[2];
Diffuse.a = alpha;
Emissive.r = (*emissiveColor)[0];
Emissive.g = (*emissiveColor)[1];
Emissive.b = (*emissiveColor)[2];
Emissive.a = alpha;
Specular.r = (*specularColor)[0];
Specular.g = (*specularColor)[1];
Specular.b = (*specularColor)[2];
Specular.a = alpha;
Power = shininess->getValue();
是不是材质部分哟问题?
|
|