Una vez hecha la inicialización correcta del dispositivo 3D vamos a establecerle algunos valores. Para ello, en la clase Motor, crearemos un nuevo Sub Público llamado PosConfigurarDX al que le pasaremos, como siempre, el objeto 3D device que configuramos antes (ByRef) queda algo así:
Public Sub PosConfigurarDX(ByRef DP3 As Direct3D.Device)
Try
DP3.SetRenderState(RenderStates.ZEnable, True)
DP3.SetRenderState(RenderStates.ZBufferWriteEnable, True)
DP3.SetRenderState(RenderStates.CullMode, Cull.CounterClockwise)
DP3.SetRenderState(RenderStates.Lighting, True)
DP3.RenderState.PointSize = 1
'HUD
DP3.RenderState.AlphaBlendEnable = True
DP3.RenderState.SourceBlend = Blend.SourceAlpha
DP3.RenderState.DestinationBlend = Blend.InvSourceAlpha
'Luz ambiental
DP3.RenderState.Ambient = Color.White
Catch ex As Exception
End Try
End Sub
Try
DP3.SetRenderState(RenderStates.ZEnable, True)
DP3.SetRenderState(RenderStates.ZBufferWriteEnable, True)
DP3.SetRenderState(RenderStates.CullMode, Cull.CounterClockwise)
DP3.SetRenderState(RenderStates.Lighting, True)
DP3.RenderState.PointSize = 1
'HUD
DP3.RenderState.AlphaBlendEnable = True
DP3.RenderState.SourceBlend = Blend.SourceAlpha
DP3.RenderState.DestinationBlend = Blend.InvSourceAlpha
'Luz ambiental
DP3.RenderState.Ambient = Color.White
Catch ex As Exception
End Try
End Sub
Bien, ante todo tener presente que estas opciones afectan directamente al dispositivo 3D no a la pantalla del ordenador. Las dos más importantes son el Cull y el Lighting.
Cull hace referencia a si queremos ocultar las caras de los triángulos que no están de frente a la cámara. Me explico. Si tenéis un triángulo, una cara mira hacia la cámara y la otra no. Mediante Cull podemos hacer que las caras "que no vemos" no se pinten esto incrementa mucho el rendimiento de la aplicación. Lo veremos con calma en el tema siguiente.
En cuanto a Lighting quiere decur que queremos emplear luces y el PointSize es el tamaño con el que queremos ver los vértices al pintarlos (poner 5 o así para tareas de debug y no dejarse los ojos...).
Una vez hecho todo esto no tenemos nada más que hacer que llamar a nuestro Sub desde Form1.
Engine.PosConfigurarDX(Dispo3D)
No hay comentarios:
Publicar un comentario