Свет на все ушло directx - PullRequest
       4

Свет на все ушло directx

2 голосов
/ 25 февраля 2011

Когда я включаю свет. Я могу видеть свой объект, но без 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 );  

red thingies are normals

Ответы [ 3 ]

0 голосов
/ 26 февраля 2011

Есть несколько вещей, которые нужно проверить.Главное, чтобы вы установили D3DRS_LIGHTING на TRUE.

Еще одна вещь, которую нужно проверить, - настройки вашего материала.Установите для D3DRS_COLORVERTEX значение TRUE.Также, если у вас нет вершинных цветов, вам нужно установить D3DRS_DIFFUSEMATERIALSOURCE в D3DMSC_MATERIAL и установить материал с вызовом SetMaterial.

Я всегда находил конвейер освещения ярым в D3D9.Я НАСТОЯТЕЛЬНО рекомендую использовать шейдеры, поскольку функция Fixed больше не используется.

0 голосов
/ 28 февраля 2011

Вы делаете рендеринг в шейдере? В этом случае освещение с фиксированной функцией не будет работать, вам придется кодировать свою собственную систему освещения в шейдер, который вы используете для рендеринга модели.

0 голосов
/ 25 февраля 2011

Мы не можем точно сказать вам, в чем проблема, без более полного списка источников. Сказав это, у меня есть идея.

Проверьте нормали на вашем объекте. Если ваши нормали неверны, включение освещения может привести к тому, что объект станет черным, что может привести к его исчезновению, если фон черный.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...