Panda3D
 All Classes Functions Variables Enumerations
vertexElementArray.h
00001 // Filename: vertexElementArray.h
00002 // Created by: aignacio (Jan06)
00003 //
00004 ////////////////////////////////////////////////////////////////////
00005 //
00006 // PANDA 3D SOFTWARE
00007 // Copyright (c) Carnegie Mellon University.  All rights reserved.
00008 //
00009 // All use of this software is subject to the terms of the revised BSD
00010 // license.  You should have received a copy of this license along
00011 // with this source code in a file named "LICENSE."
00012 //
00013 ////////////////////////////////////////////////////////////////////
00014 
00015 #ifndef VERTEX_ELEMENT_ARRAY_H
00016 #define VERTEX_ELEMENT_ARRAY_H
00017 
00018 ////////////////////////////////////////////////////////////////////
00019 //       Class : VertexElementArray
00020 // Description : This class gives the ability for a user-friendly way
00021 //               of creating a vertex declaration for DirectX 9.
00022 //               Since a vertex shader has a fixed input, the vertex
00023 //               element array can be cached so that a new vertex
00024 //               declaration for different vertex buffers can be
00025 //               quickly created.  Be sure to call
00026 //               add_end_vertex_element ( ) when finished creating a
00027 //               vertex element array.
00028 //               VERTEX_ELEMENT_TYPE is used for a simplified mapping
00029 //               of vertex buffer data to vertex shader inputs.
00030 //               This class is used with DXShaderContext9 and in
00031 //               conjunction with DXVertexBufferContext9.
00032 ////////////////////////////////////////////////////////////////////
00033 class VertexElementArray
00034 {
00035 public:
00036 
00037   VertexElementArray (int maximum_vertex_elements);
00038   ~VertexElementArray ( );
00039 
00040   void add_position_xyz_vertex_element (int stream_index, int offset);
00041   void add_position_xyzw_vertex_element (int stream_index, int offset);
00042 
00043   void add_normal_vertex_element (int stream_index, int offset);
00044   void add_binormal_vertex_element (int stream_index, int offset);
00045   void add_tangent_vertex_element (int stream_index, int offset);
00046 
00047   void add_diffuse_color_vertex_element (int stream_index, int offset);
00048   void add_specular_color_vertex_element (int stream_index, int offset);
00049 
00050   void add_u_vertex_element (int stream_index, int offset, int texture_stage);
00051   void add_uv_vertex_element (int stream_index, int offset, int texture_stage);
00052   void add_uvw_vertex_element (int stream_index, int offset, int texture_stage);
00053   void add_xyzw_vertex_element (int stream_index, int offset, int texture_stage);
00054 
00055   bool add_end_vertex_element (void);
00056 
00057   int _total_elements;
00058   int _maximum_vertex_elements;
00059 
00060   LPD3DVERTEXELEMENT9 _vertex_element_array;
00061 };
00062 
00063 #endif
 All Classes Functions Variables Enumerations