Add support for multiple texture coordinates, vertex coordinates, ...

Add support for all column names i.e. texcoord.xxxx
This commit is contained in:
aignacio_sf 2008-07-19 02:50:36 +00:00
parent 39b6637f93
commit 6ae6a86eba
3 changed files with 14 additions and 9 deletions

View File

@ -496,7 +496,7 @@ update_shader_vertex_arrays(CLP(ShaderContext) *prev, GSG *gsg)
if (false) {
} else if (name == InternalName::get_vertex ( )) {
} else if (name -> get_top ( ) == InternalName::get_vertex ( )) {
if (numeric_type == Geom::NT_float32) {
switch (num_values) {
@ -514,7 +514,7 @@ update_shader_vertex_arrays(CLP(ShaderContext) *prev, GSG *gsg)
dxgsg9_cat.error ( ) << "VE ERROR: invalid vertex type " << numeric_type << "\n";
}
} else if (name == InternalName::get_texcoord ( )) {
} else if (name -> get_top ( ) == InternalName::get_texcoord ( )) {
if (numeric_type == Geom::NT_float32) {
switch (num_values)
@ -536,7 +536,7 @@ update_shader_vertex_arrays(CLP(ShaderContext) *prev, GSG *gsg)
dxgsg9_cat.error ( ) << "VE ERROR: invalid texture coordinate type " << numeric_type << "\n";
}
} else if (name == InternalName::get_normal ( )) {
} else if (name -> get_top ( ) == InternalName::get_normal ( )) {
if (numeric_type == Geom::NT_float32) {
switch (num_values)
@ -552,7 +552,7 @@ update_shader_vertex_arrays(CLP(ShaderContext) *prev, GSG *gsg)
dxgsg9_cat.error ( ) << "VE ERROR: invalid normal type " << numeric_type << "\n";
}
} else if (name == InternalName::get_binormal ( )) {
} else if (name -> get_top ( ) == InternalName::get_binormal ( )) {
if (numeric_type == Geom::NT_float32) {
switch (num_values)
@ -568,7 +568,7 @@ update_shader_vertex_arrays(CLP(ShaderContext) *prev, GSG *gsg)
dxgsg9_cat.error ( ) << "VE ERROR: invalid binormal type " << numeric_type << "\n";
}
} else if (name == InternalName::get_tangent ( )) {
} else if (name -> get_top ( ) == InternalName::get_tangent ( )) {
if (numeric_type == Geom::NT_float32) {
switch (num_values)
@ -584,7 +584,7 @@ update_shader_vertex_arrays(CLP(ShaderContext) *prev, GSG *gsg)
dxgsg9_cat.error ( ) << "VE ERROR: invalid tangent type " << numeric_type << "\n";
}
} else if (name == InternalName::get_color ( )) {
} else if (name -> get_top ( ) == InternalName::get_color ( )) {
if (numeric_type == Geom::NT_packed_dcba ||
numeric_type == Geom::NT_packed_dabc ||

View File

@ -20,6 +20,7 @@ VertexElementArray::VertexElementArray (int maximum_vertex_elements) {
this -> offset = 0;
this -> total_elements = 0;
this -> maximum_vertex_elements = maximum_vertex_elements;
this -> total_texture_coordinate_elements = 0;
this -> vertex_element_array = new DIRECT_3D_VERTEX_ELEMENT [maximum_vertex_elements];
memset (this -> vertex_element_array, 0, sizeof (DIRECT_3D_VERTEX_ELEMENT) * maximum_vertex_elements);
this -> vertex_element_type_array = new VERTEX_ELEMENT_TYPE [maximum_vertex_elements];
@ -229,7 +230,8 @@ void VertexElementArray::add_u_vertex_element (int stream_index) {
vertex_element -> Method = D3DDECLMETHOD_DEFAULT;
vertex_element -> Usage = D3DDECLUSAGE_TEXCOORD;
vertex_element -> UsageIndex = 0;
vertex_element -> UsageIndex = this -> total_texture_coordinate_elements;
this -> total_texture_coordinate_elements++;
this -> offset += 4;
this -> total_elements++;
@ -252,7 +254,8 @@ void VertexElementArray::add_uv_vertex_element (int stream_index) {
vertex_element -> Method = D3DDECLMETHOD_DEFAULT;
vertex_element -> Usage = D3DDECLUSAGE_TEXCOORD;
vertex_element -> UsageIndex = 0;
vertex_element -> UsageIndex = this -> total_texture_coordinate_elements;
this -> total_texture_coordinate_elements++;
this -> offset += 8;
this -> total_elements++;
@ -275,7 +278,8 @@ void VertexElementArray::add_uvw_vertex_element (int stream_index) {
vertex_element -> Method = D3DDECLMETHOD_DEFAULT;
vertex_element -> Usage = D3DDECLUSAGE_TEXCOORD;
vertex_element -> UsageIndex = 0;
vertex_element -> UsageIndex = this -> total_texture_coordinate_elements;
this -> total_texture_coordinate_elements++;
this -> offset += 12;
this -> total_elements++;

View File

@ -85,6 +85,7 @@ public:
int offset;
int total_elements;
int maximum_vertex_elements;
int total_texture_coordinate_elements;
int vertex_element_type_counter_array [VS_TOTAL_TYPES];
DIRECT_3D_VERTEX_ELEMENT *vertex_element_array;
VERTEX_ELEMENT_TYPE *vertex_element_type_array;