Pregunta

Me escribió un programa sencillo para cargar un archivo de malla DirectX .X. Mi imagen cargada aparece como éste .

Pero el que los espectáculos MeshViewer es así .

¿Qué se debe hacer para obtener el aspecto 3D? Qué llamada en la biblioteca DirectX debería hacer?

¿Fue útil?

Solución

¿Está cargando el mismo archivo en el visor como en su propia aplicación? Porque en realidad parece que no tiene ningún normales en la malla. Si su uso el mismo archivo que el espectador, que debe estar en el archivo de malla sin embargo.

Aparte de eso, su iluminación es increíblemente brillantes (todos los valores en 1.0), me gustaría establecer los valores difusos a 0,0 y tratar de establecer el ambiente a 0,5 rojo. A continuación, al menos se puede saber si su luz está funcionando.

Otros consejos

Parece que no se ha definido ninguna luz.

Usted tiene que cargar los materiales definidos en la malla, y configurar al menos una luz.

Una vez que haya establecido una luz, el código de representación mediante la tubería fija en DirectX 9 se ve así:

// NumMaterials and ShipMaterialshave already been loaded with the call to D3DXLoadMeshFromX
D3DXMATERIAL* ShipMats = (D3DXMATERIAL*) ShipMaterials->GetBufferPointer();
device->SetTexture(0, NULL); // assume a mesh with no texture
for (DWORD i = 0; i < NumMaterials; ++i) 
{
    device->SetMaterial(&ShipMats[i].MatD3D);
    this->pShipMesh->DrawSubset(i);
}

Si todavía no se ve nada, establece un material que ha definido a sí mismo.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top