David Rose 20 年之前
父節點
當前提交
8e7e0f5332
共有 1 個文件被更改,包括 78 次插入81 次删除
  1. 78 81
      panda/src/dxgsg8/dxGraphicsStateGuardian8.cxx

+ 78 - 81
panda/src/dxgsg8/dxGraphicsStateGuardian8.cxx

@@ -189,13 +189,13 @@ apply_texture(int i, TextureContext *tc) {
     // error or oversight.
     if ((dirty & Texture::DF_image) == 0) {
       dxgsg8_cat.warning()
-  << "Texture " << *dtc->_texture << " has changed mipmap state.\n";
+        << "Texture " << *dtc->_texture << " has changed mipmap state.\n";
     }
 
     if (!dtc->create_texture(*_screen)) {
       // Oops, we can't re-create the texture for some reason.
       dxgsg8_cat.error()
-  << "Unable to re-create texture " << *dtc->_texture << endl;
+        << "Unable to re-create texture " << *dtc->_texture << endl;
       _d3d_device->SetTextureStageState(i, D3DTSS_COLOROP, D3DTOP_DISABLE);
       return;
     }
@@ -212,7 +212,7 @@ apply_texture(int i, TextureContext *tc) {
   _d3d_device->SetTextureStageState(i, D3DTSS_ADDRESSW, get_texture_wrap_mode(wrap_w));
 
   _d3d_device->SetTextureStageState(i, D3DTSS_BORDERCOLOR,
-            Colorf_to_D3DCOLOR(tex->get_border_color()));
+                                    Colorf_to_D3DCOLOR(tex->get_border_color()));
 
   uint aniso_degree = tex->get_anisotropic_degree();
   Texture::FilterType ft = tex->get_magfilter();
@@ -930,10 +930,10 @@ draw_triangles(const GeomTriangles *primitive) {
       // Nonindexed, client arrays.
 
       draw_primitive_up(D3DPT_TRIANGLELIST, primitive->get_num_primitives(),
-      primitive->get_first_vertex(),
-      primitive->get_num_vertices(),
-      _vertex_data->get_array(0)->get_data(),
-      _vertex_data->get_format()->get_array(0)->get_stride());
+                        primitive->get_first_vertex(),
+                        primitive->get_num_vertices(),
+                        _vertex_data->get_array(0)->get_data(),
+                        _vertex_data->get_format()->get_array(0)->get_stride());
     }
   }
 }
@@ -968,7 +968,7 @@ draw_tristrips(const GeomTristrips *primitive) {
       } else {
         // Indexed, client arrays, one long triangle strip.
         D3DFORMAT index_type = get_index_type(primitive->get_index_type());
-  draw_indexed_primitive_up
+        draw_indexed_primitive_up
           (D3DPT_TRIANGLESTRIP,
            min_vertex, max_vertex,
            primitive->get_num_vertices() - 2,
@@ -986,12 +986,12 @@ draw_tristrips(const GeomTristrips *primitive) {
 
       } else {
         // Indexed, client arrays, one long triangle strip.
-  draw_primitive_up(D3DPT_TRIANGLESTRIP,
-        primitive->get_num_vertices() - 2,
-        primitive->get_first_vertex(),
-        primitive->get_num_vertices(),
-        _vertex_data->get_array(0)->get_data(),
-        _vertex_data->get_format()->get_array(0)->get_stride());
+        draw_primitive_up(D3DPT_TRIANGLESTRIP,
+                          primitive->get_num_vertices() - 2,
+                          primitive->get_first_vertex(),
+                          primitive->get_num_vertices(),
+                          _vertex_data->get_array(0)->get_data(),
+                          _vertex_data->get_format()->get_array(0)->get_stride());
       }
     }
 
@@ -1042,7 +1042,7 @@ draw_tristrips(const GeomTristrips *primitive) {
           _vertices_tristrip_pcollector.add_level(ends[i] - start);
           unsigned int min = mins.get_data1i();
           unsigned int max = maxs.get_data1i();
-    draw_indexed_primitive_up
+          draw_indexed_primitive_up
             (D3DPT_TRIANGLESTRIP,
              min, max,
              ends[i] - start - 2,
@@ -1075,10 +1075,10 @@ draw_tristrips(const GeomTristrips *primitive) {
         unsigned int start = 0;
         for (size_t i = 0; i < ends.size(); i++) {
           _vertices_tristrip_pcollector.add_level(ends[i] - start);
-    draw_primitive_up(D3DPT_TRIANGLESTRIP, ends[i] - start - 2,
-          first_vertex + start,
-          ends[i] - start,
-          array_data, stride);
+          draw_primitive_up(D3DPT_TRIANGLESTRIP, ends[i] - start - 2,
+                            first_vertex + start,
+                            ends[i] - start,
+                            array_data, stride);
 
           start = ends[i] + 2;
         }
@@ -1141,7 +1141,7 @@ draw_trifans(const GeomTrifans *primitive) {
         _vertices_trifan_pcollector.add_level(ends[i] - start);
         unsigned int min = mins.get_data1i();
         unsigned int max = maxs.get_data1i();
-  draw_indexed_primitive_up
+        draw_indexed_primitive_up
           (D3DPT_TRIANGLEFAN,
            min, max,
            ends[i] - start - 2,
@@ -1174,11 +1174,11 @@ draw_trifans(const GeomTrifans *primitive) {
       unsigned int start = 0;
       for (size_t i = 0; i < ends.size(); i++) {
         _vertices_trifan_pcollector.add_level(ends[i] - start);
-  draw_primitive_up(D3DPT_TRIANGLEFAN,
-        ends[i] - start - 2,
-        first_vertex,
-        ends[i] - start,
-        array_data, stride);
+        draw_primitive_up(D3DPT_TRIANGLEFAN,
+                          ends[i] - start - 2,
+                          first_vertex,
+                          ends[i] - start,
+                          array_data, stride);
         start = ends[i];
       }
     }
@@ -1234,10 +1234,10 @@ draw_lines(const GeomLines *primitive) {
     } else {
       // Nonindexed, client arrays.
       draw_primitive_up(D3DPT_LINELIST, primitive->get_num_primitives(),
-      primitive->get_first_vertex(),
-      primitive->get_num_vertices(),
-      _vertex_data->get_array(0)->get_data(),
-      _vertex_data->get_format()->get_array(0)->get_stride());
+                        primitive->get_first_vertex(),
+                        primitive->get_num_vertices(),
+                        _vertex_data->get_array(0)->get_data(),
+                        _vertex_data->get_format()->get_array(0)->get_stride());
     }
   }
 }
@@ -1275,10 +1275,10 @@ draw_points(const GeomPoints *primitive) {
   } else {
     // Nonindexed, client arrays.
     draw_primitive_up(D3DPT_POINTLIST, primitive->get_num_primitives(),
-          primitive->get_first_vertex(),
-          primitive->get_num_vertices(),
-          _vertex_data->get_array(0)->get_data(),
-          _vertex_data->get_format()->get_array(0)->get_stride());
+                      primitive->get_first_vertex(),
+                      primitive->get_num_vertices(),
+                      _vertex_data->get_array(0)->get_data(),
+                      _vertex_data->get_format()->get_array(0)->get_stride());
   }
 }
 
@@ -1496,11 +1496,11 @@ framebuffer_copy_to_ram(Texture *tex, int z, const DisplayRegion *dr, const Rend
     // need to copy it to a temporary surface of the appropriate type
     // first.
     hr = _d3d_device->CreateImageSurface(w, h, _screen->_display_mode.Format,
-           &temp_surface);
+                                         &temp_surface);
     if (FAILED(hr)) {
       dxgsg8_cat.error()
-  << "CreateImageSurface failed in copy_pixel_buffer()"
-  << D3DERRORSTRING(hr);
+        << "CreateImageSurface failed in copy_pixel_buffer()"
+        << D3DERRORSTRING(hr);
       backbuffer->Release();
       return false;
     }
@@ -1542,8 +1542,8 @@ framebuffer_copy_to_ram(Texture *tex, int z, const DisplayRegion *dr, const Rend
     hr = _d3d_device->CreateImageSurface(w, h, D3DFMT_A8R8G8B8, &temp_surface);
     if (FAILED(hr)) {
       dxgsg8_cat.error()
-  << "CreateImageSurface failed in copy_pixel_buffer()"
-  << D3DERRORSTRING(hr);
+        << "CreateImageSurface failed in copy_pixel_buffer()"
+        << D3DERRORSTRING(hr);
       return false;
     }
 
@@ -1551,7 +1551,7 @@ framebuffer_copy_to_ram(Texture *tex, int z, const DisplayRegion *dr, const Rend
 
     if (hr == D3DERR_DEVICELOST) {
       dxgsg8_cat.error()
-  << "copy_pixel_buffer failed: device lost\n";
+        << "copy_pixel_buffer failed: device lost\n";
       temp_surface->Release();
       return false;
     }
@@ -1568,7 +1568,7 @@ framebuffer_copy_to_ram(Texture *tex, int z, const DisplayRegion *dr, const Rend
   }
 
   DXTextureContext8::d3d_surface_to_texture(rect, temp_surface,
-              copy_inverted, tex, z);
+                                            copy_inverted, tex, z);
 
   RELEASE(temp_surface, dxgsg8, "temp_surface", RELEASE_ONCE);
 
@@ -1658,19 +1658,19 @@ reset() {
   hr = _d3d_device->GetCreationParameters (&creation_parameters);
 
   // default render to texture format
-//  _screen->_render_to_texture_d3d_format = D3DFMT_X8R8G8B8;
+  //  _screen->_render_to_texture_d3d_format = D3DFMT_X8R8G8B8;
 
   // match the display mode format for render to texture
   _screen->_render_to_texture_d3d_format = _screen->_display_mode.Format;
 
   if (SUCCEEDED (hr)) {
     hr = _screen->_d3d8->CheckDeviceFormat (
-        creation_parameters.AdapterOrdinal,
-        creation_parameters.DeviceType,
-        _screen->_display_mode.Format,
-        D3DUSAGE_RENDERTARGET,
-        D3DRTYPE_TEXTURE,
-        _screen->_render_to_texture_d3d_format);
+                                            creation_parameters.AdapterOrdinal,
+                                            creation_parameters.DeviceType,
+                                            _screen->_display_mode.Format,
+                                            D3DUSAGE_RENDERTARGET,
+                                            D3DRTYPE_TEXTURE,
+                                            _screen->_render_to_texture_d3d_format);
     if (SUCCEEDED (hr)) {
       _supports_render_texture = true;
     }
@@ -1724,7 +1724,7 @@ reset() {
     // look for all possible DX8 texture fmts
     D3DFORMAT_FLAG fmtflag = D3DFORMAT_FLAG(1 << i);
     hr = _screen->_d3d8->CheckDeviceFormat(_screen->_card_id, D3DDEVTYPE_HAL, _screen->_display_mode.Format,
-                                          0x0, D3DRTYPE_TEXTURE, g_D3DFORMATmap[fmtflag]);
+                                           0x0, D3DRTYPE_TEXTURE, g_D3DFORMATmap[fmtflag]);
     if (SUCCEEDED(hr)){
       _screen->_supported_tex_formats_mask |= fmtflag;
     }
@@ -1770,7 +1770,7 @@ reset() {
 
   // turn on dithering if the rendertarget is < 8bits/color channel
   bool dither_enabled = ((!dx_no_dithering) && IS_16BPP_DISPLAY_FORMAT(_screen->_presentation_params.BackBufferFormat)
-       && (_screen->_d3dcaps.RasterCaps & D3DPRASTERCAPS_DITHER));
+                         && (_screen->_d3dcaps.RasterCaps & D3DPRASTERCAPS_DITHER));
   _d3d_device->SetRenderState(D3DRS_DITHERENABLE, dither_enabled);
 
   _d3d_device->SetRenderState(D3DRS_CLIPPING, true);
@@ -1832,9 +1832,9 @@ apply_fog(Fog *fog) {
       fog->get_linear_range(onset, opaque);
 
       _d3d_device->SetRenderState(D3DRS_FOGSTART,
-                                   *((LPDWORD) (&onset)));
+                                  *((LPDWORD) (&onset)));
       _d3d_device->SetRenderState(D3DRS_FOGEND,
-                                   *((LPDWORD) (&opaque)));
+                                  *((LPDWORD) (&opaque)));
     }
     break;
   case Fog::M_exponential:
@@ -1843,7 +1843,7 @@ apply_fog(Fog *fog) {
       // Exponential fog is always camera-relative.
       float fog_density = fog->get_exp_density();
       _d3d_device->SetRenderState(D3DRS_FOGDENSITY,
-                                   *((LPDWORD) (&fog_density)));
+                                  *((LPDWORD) (&fog_density)));
     }
     break;
   }
@@ -2518,7 +2518,7 @@ do_issue_texture() {
     apply_texture(i, tc);
     set_texture_blend_mode(i, stage);
 
-    int texcoord_dimensions = 0;
+    int texcoord_dimensions = 2;
 
     CPT(TransformState) tex_mat = TransformState::make_identity();
     if (_state._tex_matrix->has_stage(stage)) {
@@ -2623,7 +2623,7 @@ do_issue_texture() {
     _d3d_device->SetRenderState(D3DRS_POINTSPRITEENABLE, any_point_sprite);
 
     if (!tex_mat->is_identity()) {
-      if (tex_mat->is_2d() && texcoord_dimensions <= 2) {
+      if (/*tex_mat->is_2d() &&*/ texcoord_dimensions <= 2) {
         // For 2-d texture coordinates, we have to reorder the matrix.
         LMatrix4f m = tex_mat->get_mat();
         m.set(m(0, 0), m(0, 1), m(0, 3), 0.0f,
@@ -2636,12 +2636,12 @@ do_issue_texture() {
       } else {
         LMatrix4f m = tex_mat->get_mat();
         _d3d_device->SetTransform(get_tex_mat_sym(i), (D3DMATRIX *)m.get_data());
-  DWORD transform_flags = texcoord_dimensions;
-  if (m.get_col(3) != LVecBase4f(0.0f, 0.0f, 0.0f, 1.0f)) {
-    // If we have a projected texture matrix, we also need to
-    // set D3DTTFF_COUNT4.
-    transform_flags = D3DTTFF_COUNT4 | D3DTTFF_PROJECTED;
-  }
+        DWORD transform_flags = texcoord_dimensions;
+        if (m.get_col(3) != LVecBase4f(0.0f, 0.0f, 0.0f, 1.0f)) {
+          // If we have a projected texture matrix, we also need to
+          // set D3DTTFF_COUNT4.
+          transform_flags = D3DTTFF_COUNT4 | D3DTTFF_PROJECTED;
+        }
         _d3d_device->SetTextureStageState(i, D3DTSS_TEXTURETRANSFORMFLAGS,
                                           transform_flags);
       }
@@ -2776,12 +2776,12 @@ do_issue_blending() {
   if (_target._color_write->get_channels() == ColorWriteAttrib::C_off) {
     if (_target._color_write != _state._color_write) {
       if (_screen->_can_direct_disable_color_writes) {
-  _d3d_device->SetRenderState(D3DRS_ALPHABLENDENABLE, FALSE);
+        _d3d_device->SetRenderState(D3DRS_ALPHABLENDENABLE, FALSE);
         _d3d_device->SetRenderState(D3DRS_COLORWRITEENABLE, (DWORD)0x0);
       } else {
-  _d3d_device->SetRenderState(D3DRS_ALPHABLENDENABLE, TRUE);
-  _d3d_device->SetRenderState(D3DRS_SRCBLEND, D3DBLEND_ZERO);
-  _d3d_device->SetRenderState(D3DRS_DESTBLEND, D3DBLEND_ONE);
+        _d3d_device->SetRenderState(D3DRS_ALPHABLENDENABLE, TRUE);
+        _d3d_device->SetRenderState(D3DRS_SRCBLEND, D3DBLEND_ZERO);
+        _d3d_device->SetRenderState(D3DRS_DESTBLEND, D3DBLEND_ONE);
       }
     }
     return;
@@ -2824,9 +2824,9 @@ do_issue_blending() {
     }
 
     _d3d_device->SetRenderState(D3DRS_SRCBLEND,
-        get_blend_func(color_blend->get_operand_a()));
+                                get_blend_func(color_blend->get_operand_a()));
     _d3d_device->SetRenderState(D3DRS_DESTBLEND,
-        get_blend_func(color_blend->get_operand_b()));
+                                get_blend_func(color_blend->get_operand_b()));
     return;
   }
 
@@ -3751,10 +3751,10 @@ get_texture_argument_modifier(TextureStage::CombineOperand operand) {
 ////////////////////////////////////////////////////////////////////
 void DXGraphicsStateGuardian8::
 draw_primitive_up(D3DPRIMITIVETYPE primitive_type,
-      unsigned int primitive_count,
-      unsigned int first_vertex,
-      unsigned int num_vertices,
-      const unsigned char *buffer, size_t stride) {
+                  unsigned int primitive_count,
+                  unsigned int first_vertex,
+                  unsigned int num_vertices,
+                  const unsigned char *buffer, size_t stride) {
 
   // It appears that the common ATI driver seems to fail to draw
   // anything in the DrawPrimitiveUP() call if the address range of
@@ -3769,12 +3769,12 @@ draw_primitive_up(D3DPRIMITIVETYPE primitive_type,
     // Actually, the buffer doesn't fit within the required limit
     // anyway.  Go ahead and draw it and hope for the best.
     _d3d_device->DrawPrimitiveUP(primitive_type, primitive_count,
-         buffer_start, stride);
+                                 buffer_start, stride);
 
   } else if ((((long)buffer_end ^ (long)buffer_start) & ~0xffff) == 0) {
     // No problem; we can draw the buffer directly.
     _d3d_device->DrawPrimitiveUP(primitive_type, primitive_count,
-         buffer_start, stride);
+                                 buffer_start, stride);
 
   } else {
     // We have a problem--the buffer crosses over a 0x10000 boundary.
@@ -3783,7 +3783,7 @@ draw_primitive_up(D3DPRIMITIVETYPE primitive_type,
     unsigned char *safe_buffer_start = get_safe_buffer_start();
     memcpy(safe_buffer_start, buffer_start, buffer_end - buffer_start);
     _d3d_device->DrawPrimitiveUP(primitive_type, primitive_count,
-         safe_buffer_start, stride);
+                                 safe_buffer_start, stride);
 
   }
 }
@@ -3801,19 +3801,16 @@ draw_primitive_up(D3DPRIMITIVETYPE primitive_type,
 ////////////////////////////////////////////////////////////////////
 void DXGraphicsStateGuardian8::
 draw_indexed_primitive_up(D3DPRIMITIVETYPE primitive_type,
-        unsigned int min_index, unsigned int max_index,
-        unsigned int num_primitives,
-        const unsigned char *index_data,
-        D3DFORMAT index_type,
-        const unsigned char *buffer, size_t stride) {
+                          unsigned int min_index, unsigned int max_index,
+                          unsigned int num_primitives,
+                          const unsigned char *index_data,
+                          D3DFORMAT index_type,
+                          const unsigned char *buffer, size_t stride) {
   // As above, we'll hack the case of the buffer crossing the 0x10000
   // boundary.
   const unsigned char *buffer_start = buffer + stride * min_index;
   const unsigned char *buffer_end = buffer + stride * (max_index + 1);
 
-  bool is_mickey = (_vertex_data->get_name() == "mickey");
-  is_mickey = false;
-
   if (buffer_end - buffer > 0x10000) {
     // Actually, the buffer doesn't fit within the required limit
     // anyway.  Go ahead and draw it and hope for the best.