From 9d5e107aa44113e038e60932afda9bb7fc9b3465 Mon Sep 17 00:00:00 2001 From: David Rose Date: Thu, 24 Nov 2011 14:34:35 +0000 Subject: [PATCH] patch from teedee for dx9 custom vertex data --- panda/src/dxgsg9/dxShaderContext9.cxx | 3 +++ panda/src/dxgsg9/vertexElementArray.cxx | 18 ++++++++++++++++++ panda/src/dxgsg9/vertexElementArray.h | 1 + 3 files changed, 22 insertions(+) diff --git a/panda/src/dxgsg9/dxShaderContext9.cxx b/panda/src/dxgsg9/dxShaderContext9.cxx index 0b75bc76d6..a38e176418 100644 --- a/panda/src/dxgsg9/dxShaderContext9.cxx +++ b/panda/src/dxgsg9/dxShaderContext9.cxx @@ -629,6 +629,9 @@ update_shader_vertex_arrays(CLP(ShaderContext) *prev, GSG *gsg, bool force) { case 3: vertex_element_array->add_uvw_vertex_element(array_index, start, slot); break; + case 4: + vertex_element_array->add_xyzw_vertex_element(array_index, start, slot); + break; default: dxgsg9_cat.error() << "VE ERROR: invalid number of vertex texture coordinate elements " << num_values << "\n"; break; diff --git a/panda/src/dxgsg9/vertexElementArray.cxx b/panda/src/dxgsg9/vertexElementArray.cxx index 075b8bff42..30d99ec8bb 100644 --- a/panda/src/dxgsg9/vertexElementArray.cxx +++ b/panda/src/dxgsg9/vertexElementArray.cxx @@ -208,6 +208,24 @@ void VertexElementArray::add_uvw_vertex_element(int stream_index, int offset, in _total_elements++; } +void VertexElementArray::add_xyzw_vertex_element(int stream_index, int offset, int texture_stage) { + if (_total_elements >= _maximum_vertex_elements) { + return; + } + + LPD3DVERTEXELEMENT9 vertex_element = &_vertex_element_array[_total_elements]; + + vertex_element->Stream = stream_index; + vertex_element->Offset = offset; + vertex_element->Type = D3DDECLTYPE_FLOAT4; + vertex_element->Method = D3DDECLMETHOD_DEFAULT; + + vertex_element->Usage = D3DDECLUSAGE_TEXCOORD; + vertex_element->UsageIndex = texture_stage; + + _total_elements++; +} + bool VertexElementArray::add_end_vertex_element(void) { if (_total_elements >= _maximum_vertex_elements) { return false; diff --git a/panda/src/dxgsg9/vertexElementArray.h b/panda/src/dxgsg9/vertexElementArray.h index 0507cd11e9..d000b64274 100644 --- a/panda/src/dxgsg9/vertexElementArray.h +++ b/panda/src/dxgsg9/vertexElementArray.h @@ -50,6 +50,7 @@ public: void add_u_vertex_element (int stream_index, int offset, int texture_stage); void add_uv_vertex_element (int stream_index, int offset, int texture_stage); void add_uvw_vertex_element (int stream_index, int offset, int texture_stage); + void add_xyzw_vertex_element (int stream_index, int offset, int texture_stage); bool add_end_vertex_element (void);