Compartilhar via


Using Fixed-Point Vertex Data 

You can use fixed-point vertex data to increase the transforming and lighting speeds of 3D graphics drivers that do not implement transforming and lighting in hardware. Some drivers are capable of working faster on fixed-point data. You can determine if your driver uses floating-point math operations by examining the NativeFloat property of a DeviceCaps structure. If the property value is false, then using data in a fixed-point format is preferable for the device. All Windows Mobile Direct3D drivers are required to support both fixed-point and floating-point data.

Fixed-point vertex buffers are used in the same way that floating-point vertex buffers are used. The only differences are the format of the data they contain and the flexible vertex format specified when the vertex buffer is created.

If the data is not originally in a fixed-point format, you can construct a Mesh object that contains floating-point data and then convert it to fixed-point data with a call to the Clone method of the Mesh object.

The following table lists the VertexFormats enumeration values used to specify various flexible formats for floating-point and fixed-point data. This list is not comprehensive of the possibilities, but it does provide examples of how a fixed-point flexible vertex format differs from a floating-point flexible vertex format.

Format Floating-point specification Fixed-point specification

Position only

VertexFormats.Position

VertexFormats.PositionFixed

Position and normal

VertexFormats.Position | VertexFormats.Normal

VertexFormats.PositionFixed | VertexFormats.NormalFixed

Position and diffuse color

VertexFormats.Position | VertexFormats.Diffuse

VertexFormats.PositionFixed | VertexFormats.Diffuse

Position and one 2D texture coordinate

VertexFormats.Position | VertexFormats.Texture1

VertexFormats.PositionFixed | VertexFormats.Texture1 | VertexTextureCoordinate.Fixed(0)

Position, normal, specular color, diffuse color, a 1D texture coordinate, and a 2D texture coordinate

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)

 

See Also

Other Resources

Mobile Direct3D Programming