
Эксперт
  
Профиль
Группа: Завсегдатай
Сообщений: 1568
Регистрация: 18.7.2006
Где: Ivory tower
Репутация: нет Всего: 37
|
Доброго всем времени суток. Устанавливаю перед отображением сетки направленный свет и свойства материала, а ничего не происходит. Помогите плз... Код |
D3DLIGHT9 InitDirectionalLight(D3DXVECTOR3* direction, D3DXCOLOR* color) { D3DLIGHT9 light; ::ZeroMemory(&light, sizeof(light));
light.Type = D3DLIGHT_DIRECTIONAL; light.Ambient = *color * 0.4f; light.Diffuse = *color; light.Specular = *color * 0.6f; light.Direction = *direction;
return light; }
D3DMATERIAL9 InitMtrl(D3DXCOLOR a, D3DXCOLOR d, D3DXCOLOR s, D3DXCOLOR e, float p) { D3DMATERIAL9 mtrl; mtrl.Ambient = a; mtrl.Diffuse = d; mtrl.Specular = s; mtrl.Emissive = e; mtrl.Power = p; return mtrl; }
//----------------------------------------------------------------------------- // Name: Render() // Desc: Draws the scene //----------------------------------------------------------------------------- VOID Render() { const D3DXCOLOR WHITE(D3DCOLOR_XRGB(255, 255, 255)); const D3DXCOLOR BLACK(D3DCOLOR_XRGB( 0, 0, 0)); const D3DXCOLOR RED(D3DCOLOR_XRGB(255, 0, 0)); const D3DXCOLOR GREEN(D3DCOLOR_XRGB( 0, 255, 0)); const D3DXCOLOR BLUE(D3DCOLOR_XRGB( 0, 0, 255)); const D3DXCOLOR YELLOW(D3DCOLOR_XRGB(255, 255, 0)); const D3DXCOLOR CYAN(D3DCOLOR_XRGB( 0, 255, 255)); const D3DXCOLOR MAGENTA(D3DCOLOR_XRGB(255, 0, 255));
const D3DMATERIAL9 GREEN_MTRL = InitMtrl(GREEN, GREEN, GREEN, BLACK, 8.0f);
D3DXVECTOR3 dir(0.0f, 1.0f, 0.0f); D3DXCOLOR c(D3DCOLOR_XRGB(0, 255, 0)); D3DLIGHT9 dirLight = InitDirectionalLight(&dir, &c);
g_pd3dDevice->SetLight( 0, // устанавливаемый элемент списка источников света, диапазон 0 - maxlights &dirLight);// адрес инициализированной структуры D3DLIGHT9
LPD3DXMESH mesh = 0; LPD3DXBUFFER * ppAdjacency; D3DXCreateSphere( g_pd3dDevice, 1.0f, 50, 50, &mesh, NULL);
// Clear the backbuffer to a black color g_pd3dDevice->Clear( 0, NULL, D3DCLEAR_TARGET, D3DCOLOR_XRGB(0,0,0), 1.0f, 0 );
// Begin the scene if( SUCCEEDED( g_pd3dDevice->BeginScene() ) ) { // Setup the world, view, and projection matrices SetupMatrices(); // здесь свет включаю g_pd3dDevice->LightEnable( 0, // Включаемый или выключаемый источник света в списке true); // true = включить, false = выключить // Render the vertex buffer contents g_pd3dDevice->SetStreamSource( 0, g_pVB, 0, sizeof(CUSTOMVERTEX) ); g_pd3dDevice->SetFVF( D3DFVF_CUSTOMVERTEX ); g_pd3dDevice->DrawPrimitive( D3DPT_TRIANGLESTRIP, 0, 1 );
mesh->DrawSubset(0); D3DXMATRIXA16 matWorld; D3DXMatrixTranslation(&matWorld, 1.5f, 0.5f, 0.5f); g_pd3dDevice->SetMaterial(&GREEN_MTRL); // вот тут материал установил ...
g_pd3dDevice->SetTransform( D3DTS_WORLD, &matWorld ); mesh->DrawSubset(0);
mesh->Release(); mesh = 0; // End the scene g_pd3dDevice->EndScene(); }
// Present the backbuffer contents to the display g_pd3dDevice->Present( NULL, NULL, NULL, NULL ); }
|
Сразу хочу сказать, что DX работает в дебажном режиме и никаких ворнингов не выдает
|