Utilizar datos de vértice de punto fijo
Actualización: noviembre 2007
Puede utilizar datos de vértices de punto fijo para incrementar las velocidades de transformación e iluminación de los controladores de gráficos 3D que no las implementen en el hardware. Algunos controladores pueden funcionar con mayor rapidez si se trabaja con datos de punto fijo. Puede determinar si su controlador utiliza las operaciones matemáticas de punto flotante examinando la propiedad NativeFloat de una estructura DeviceCaps. Si el valor de la propiedad es false, es preferible para el dispositivo usar datos en formato de punto fijo. Se requieren todos los controladores de Windows Mobile Direct3D para compatibilidad con datos de punto fijo y punto flotante.
Se utilizan los búferes de vértices de punto fijo del mismo modo que se utilizan los de vértices de punto flotante. Las únicas diferencias son el formato de los datos que contienen y el formato de vértices flexibles especificado cuando se crea el búfer de vértices.
Si el formato de los datos no es originalmente de punto fijo, puede construir un objeto Mesh que contiene datos de punto flotante y, a continuación, convertirlo en datos de punto fijo mediante una llamada al método Clone del objeto Mesh.
La tabla siguiente muestra los valores de la enumeración VertexFormats utilizados para especificar los distintos formatos flexibles para datos de punto flotante y punto fijo. Esta lista no es una lista detallada de todas las posibilidades, pero sí proporciona ejemplos de las diferencias entre los formatos de vértices de punto fijo y flotante.
Formato |
Especificación de punto flotante |
Especificación de punto fijo |
---|---|---|
Sólo posición |
VertexFormats.Position |
VertexFormats.PositionFixed |
Posición y normal |
VertexFormats.Position | VertexFormats.Normal |
VertexFormats.PositionFixed | VertexFormats.NormalFixed |
Posición y color difuso |
VertexFormats.Position | VertexFormats.Diffuse |
VertexFormats.PositionFixed | VertexFormats.Diffuse |
Posición y una coordenada de textura 2D |
VertexFormats.Position | VertexFormats.Texture1 |
VertexFormats.PositionFixed | VertexFormats.Texture1 | VertexTextureCoordinate.Fixed(0) |
Posición, normal, color especular, color difuso, coordinada de textura de 1D y de 2D. |
VertexFormats.Position | VertexFormats.Normal | VertexFormats.Diffuse | VertexFormats.Texture2 | VertexTextureCoordinate.Size1(0) |
VertexFormats.PositionFixed | VertexFormats.NormalFixed | VertexFormats.Diffuse | VertexFormats.Texture2 | VertexTextureCoordinate.Size1(0) | VertexTextureCoordinate.Fixed(0) | VertexTextureCoordinate.Fixed(1) |