Panda3D
vertexElementArray.h
1 // Filename: vertexElementArray.h
2 // Created by: aignacio (Jan06)
3 //
4 ////////////////////////////////////////////////////////////////////
5 //
6 // PANDA 3D SOFTWARE
7 // Copyright (c) Carnegie Mellon University. All rights reserved.
8 //
9 // All use of this software is subject to the terms of the revised BSD
10 // license. You should have received a copy of this license along
11 // with this source code in a file named "LICENSE."
12 //
13 ////////////////////////////////////////////////////////////////////
14 
15 #ifndef VERTEX_ELEMENT_ARRAY_H
16 #define VERTEX_ELEMENT_ARRAY_H
17 
18 ////////////////////////////////////////////////////////////////////
19 // Class : VertexElementArray
20 // Description : This class gives the ability for a user-friendly way
21 // of creating a vertex declaration for DirectX 9.
22 // Since a vertex shader has a fixed input, the vertex
23 // element array can be cached so that a new vertex
24 // declaration for different vertex buffers can be
25 // quickly created. Be sure to call
26 // add_end_vertex_element ( ) when finished creating a
27 // vertex element array.
28 // VERTEX_ELEMENT_TYPE is used for a simplified mapping
29 // of vertex buffer data to vertex shader inputs.
30 // This class is used with DXShaderContext9 and in
31 // conjunction with DXVertexBufferContext9.
32 ////////////////////////////////////////////////////////////////////
34 {
35 public:
36 
37  VertexElementArray (int maximum_vertex_elements);
38  ~VertexElementArray ( );
39 
40  void add_position_xyz_vertex_element (int stream_index, int offset);
41  void add_position_xyzw_vertex_element (int stream_index, int offset);
42 
43  void add_normal_vertex_element (int stream_index, int offset);
44  void add_binormal_vertex_element (int stream_index, int offset);
45  void add_tangent_vertex_element (int stream_index, int offset);
46 
47  void add_diffuse_color_vertex_element (int stream_index, int offset);
48  void add_specular_color_vertex_element (int stream_index, int offset);
49 
50  void add_u_vertex_element (int stream_index, int offset, int texture_stage);
51  void add_uv_vertex_element (int stream_index, int offset, int texture_stage);
52  void add_uvw_vertex_element (int stream_index, int offset, int texture_stage);
53  void add_xyzw_vertex_element (int stream_index, int offset, int texture_stage);
54 
55  bool add_end_vertex_element (void);
56 
57  int _total_elements;
58  int _maximum_vertex_elements;
59 
60  LPD3DVERTEXELEMENT9 _vertex_element_array;
61 };
62 
63 #endif
This class gives the ability for a user-friendly way of creating a vertex declaration for DirectX 9...