当我转向灯光时。我可以看到我的物体,但没有3D灯 我将对象位置设置为0,0,10 这是我设置Light的代码
D3DLIGHT9 light;
ZeroMemory( &light, sizeof(D3DLIGHT9) );
light.Type = D3DLIGHT_DIRECTIONAL;
light.Diffuse.r = 1.0f;
light.Diffuse.g = 1.0f;
light.Diffuse.b = 1.0f;
light.Diffuse.a = 1.0f;
light.Range = 1000.0f;
// Create a direction for our light - it must be normalized
D3DXVECTOR3 vecDir;
vecDir = D3DXVECTOR3(0.0f,10.0f,10);
D3DXVec3Normalize( (D3DXVECTOR3*)&light.Direction, &vecDir );
// Tell the device about the light and turn it on
d3ddev->SetLight( 0, &light );
d3ddev->LightEnable( 0, TRUE );
答案 0 :(得分:0)
如果没有更完整的源列表,我们无法准确地告诉您问题是什么。话虽如此,我有个主意。
检查对象的法线。如果您的法线不正确,打开灯光可能会导致对象渲染为黑色,如果背景为黑色,可能会使其消失。
答案 1 :(得分:0)
有几件事需要检查。主要的是你是否将D3DRS_LIGHTING设置为TRUE。
要检查的另一件事是您的材料设置。将D3DRS_COLORVERTEX设置为TRUE。此外,如果您没有顶点颜色,则需要将D3DRS_DIFFUSEMATERIALSOURCE设置为D3DMSC_MATERIAL,并通过调用SetMaterial设置材质。
我总是发现D3D9上的照明管道真的很复杂。我强烈建议只使用着色器,因为不再使用固定功能。
答案 2 :(得分:0)
你是用着色器渲染的吗?如果是这样,固定功能照明将无法工作,您必须将自己的照明系统编码到用于渲染模型的着色器中。