Quellcode durchsuchen

patch from teedee for dx9 custom vertex data

David Rose vor 14 Jahren
Ursprung
Commit
9d5e107aa4

+ 3 - 0
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;

+ 18 - 0
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;

+ 1 - 0
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);