mirror of
https://github.com/panda3d/panda3d.git
synced 2025-09-30 16:58:40 -04:00
Add support for multiple texture coordinates, vertex coordinates, ...
Add support for all column names i.e. texcoord.xxxx
This commit is contained in:
parent
39b6637f93
commit
6ae6a86eba
@ -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 ||
|
||||
|
@ -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++;
|
||||
|
@ -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;
|
||||
|
Loading…
x
Reference in New Issue
Block a user