簡體   English   中英

一切都沒有了DirectX

[英]Light on everything is gone directx

當我轉燈。 我可以看到我的物體,但是沒有3D燈光。
我將對象位置設置為0、0、10。
這是我的代碼來設置我的光

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 );  

紅色的東西很正常

如果沒有更完整的源清單,我們不可能確切地告訴您問題出在哪里。 話雖如此,我有一個主意。

檢查對象的法線。 如果法線不正確,則打開照明可能會導致對象渲染為黑色,如果背景為黑色,則可能使其消失。

有幾件事要檢查。 最主要的是是否將D3DRS_LIGHTING設置為TRUE。

要檢查的另一件事是您的材料設置。 將D3DRS_COLORVERTEX設置為TRUE。 另外,如果沒有頂點顏色,則需要將D3DRS_DIFFUSEMATERIALSOURCE設置為D3DMSC_MATERIAL並通過調用SetMaterial設置材質。

我總是發現D3D9上的照明管道非常復雜。 我強烈建議僅使用着色器,因為不再使用固定功能。

您是否在着色器中進行渲染? 如果是這樣,固定功能照明將不起作用,則必須將自己的照明系統編碼到用於渲染模型的着色器中。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM