Utilisation de données de vertex à virgule fixe
Mise à jour : novembre 2007
Vous pouvez utiliser des données de vertex à virgule fixe pour augmenter les vitesses de transformation et d'éclairage des pilotes graphiques 3D qui n'implémentent pas la transformation et l'éclairage dans le matériel. Certains pilotes sont capables de travailler plus vite sur les données à virgule fixe. Vous pouvez déterminer si votre pilote utilise des opérations mathématiques à virgule flottante en examinant la propriété NativeFloat d'une structure DeviceCaps. Si la valeur de propriété est false, l'utilisation de données dans un format à virgule fixe est préférable pour le périphérique. Tous les pilotes Windows Mobile Direct3D sont requis pour prendre en charge à la fois les données à virgule fixe et à virgule flottante.
Les mémoires tampons de vertex à virgule fixe sont utilisées de la même façon que les mémoires tampons de vertex à virgule flottante. Les seules différences sont le format des données qu'elles contiennent et le format de vertex flexible spécifié lorsque la mémoire tampon de vertex est créée.
Si les données ne sont pas à l'origine dans un format à virgule fixe, vous pouvez construire un objet Mesh qui contient des données à virgule flottante, puis le convertir en données à virgule fixe avec un appel à la méthode Clone de l'objet Mesh.
Le tableau suivant répertorie les valeurs d'énumération VertexFormats utilisées pour spécifier différents formats flexibles pour les données à virgule flottante et à virgule fixe. Cette liste ne contient pas toutes les possibilités, mais fournit des exemples des différences entre un format de vertex flexible à virgule fixe et un format de vertex flexible à virgule flottante.
Format |
Spécification à virgule flottante |
Spécification à virgule fixe |
---|---|---|
Position uniquement |
VertexFormats.Position |
VertexFormats.PositionFixed |
Position et normale |
VertexFormats.Position | VertexFormats.Normal |
VertexFormats.PositionFixed | VertexFormats.NormalFixed |
Position et couleur diffuse |
VertexFormats.Position | VertexFormats.Diffuse |
VertexFormats.PositionFixed | VertexFormats.Diffuse |
Position et une coordonnée de texture 2D |
VertexFormats.Position | VertexFormats.Texture1 |
VertexFormats.PositionFixed | VertexFormats.Texture1 | VertexTextureCoordinate.Fixed(0) |
Position, normale, couleur spéculaire, couleur diffuse, une coordonnée de texture 1D et une coordonnée de texture 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) |
Voir aussi
Autres ressources
Programmation Direct3D Mobile dans le .NET Compact Framework