patch from teedee for dx9 custom vertex data

This commit is contained in:
David Rose 2011-11-24 14:34:35 +00:00
parent 560221d566
commit 9d5e107aa4
3 changed files with 22 additions and 0 deletions

View File

@ -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;

View File

@ -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;

View File

@ -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);