D3D Animation Basis(10) 摘要: The remaining two draw_meshes functions
duplicate the exact features of the first two, except that all meshes in the
linked list of mesh objects are rendered.
D3D Animation Basis(9) 摘要: As for the second draw_mesh function, it
skips using the DrawSubset function and uses its own function to render
subsets of polygon faces, using the vertex shader and vertex declaration you
specify. This second function is extremely useful if you are using vertex
shaders to render your meshes.
D3D Animation Basis(8) 摘要: Now that you have your meshes loaded and
you've updated those skinned meshes that needed updating, it is time to
throw some pixels at the display and show off those meshes! In total, I have
created four mesh−rendering functions to help you in your projects.
D3D Animation Basis(7) 摘要: A skinned mesh works like this: Each
vertex is attached to an imaginary bone (which is specified by a frame
object). As these frames move, so do the vertices attached to them. To
update the coordinates of the vertices as the bones move, you need to call a
special function that takes the source vertex data, transforms it according
to the bones' transformations, and stores the results in a second mesh
object. This special function is called ID3DXSkinInfo::UpdateSkinnedMesh.
D3D Animation Basis(6) 摘要: The second load_mesh function is much
like the first, except that instead of loading an entire .X file into one
D3DXMESHCONTAINER_EX object, you are able to load a single mesh object
(using the D3DXLoadSkinMeshFromXof function) as pointed to by a
ID3DXFileData object (used while parsing an .X file).
D3D Animation Basis(5) 摘要: The first of the mesh−related helper
functions is load_mesh. Actually there are three versions of the load_mesh
function. The first version is used to load a mesh from an .X file using the
D3DXLoadMeshFromX function. That means all meshes contained within the .X
file are compressed into a single mesh object, which is subsequently stored
in a D3DXMESHCONTAINER_EX object.
D3D Animation Basis(4) 摘要: Moving on in the list of helper
functions, you'll find load_vertex_shader. You'll use this function to help
you load your vertex shaders, as well as prepare your vertex shader
declarations.
The actual code to the load_vertex_shader function is short, so instead of
breaking it up to explain it, I'll give it to you all at once.
D3D Animation Basis(3) 摘要: Next in line for the helper functions is
init_d3d, which you use to initialize Direct3D and create a 3D device and
display window. I tried to keep the code as simple as possible, performing
the typical initialization code you would use in any Direct3D application.
D3D Animation Basis(2) 摘要: Whereas you might be used to using the
ID3DXMesh object to contain your mesh data, you may have found
it a pain to store the mesh's material and effects data separately. Not only
that, but what about using the other
D3DX mesh objects, such as ID3DXPMesh and ID3DXSkinMesh? Why not just create
a single mesh
object that represents all mesh types and contains all material data along
with it?
D3D Animation Basis(1) 摘要: The D3DXFRAME object helps form a
hierarchy of reference frames. These reference frames are used to
connect a series of meshes together, with each frame having its own
transformation to apply to the mesh
connected to it. In this way of using frames to point to meshes, you can
minimize the number of meshes used
because you can reference meshes instead of having to reload them.