Browse Source

Fix framebuffer_copy_to_ram function.
GetRenderTargetData function requires the target buffer size to be the
same size as the backbuffer.

aignacio_sf 20 years ago
parent
commit
d149ca28bb
1 changed files with 10 additions and 4 deletions
  1. 10 4
      panda/src/dxgsg9/dxGraphicsStateGuardian9.cxx

+ 10 - 4
panda/src/dxgsg9/dxGraphicsStateGuardian9.cxx

@@ -1569,12 +1569,18 @@ 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
     // need to copy it to a temporary surface of the appropriate type
     // first.
     // first.
   D3DPOOL pool;
   D3DPOOL pool;
+  D3DSURFACE_DESC surface_description;
+
+  backbuffer -> GetDesc (&surface_description);
 
 
   pool = D3DPOOL_SYSTEMMEM;
   pool = D3DPOOL_SYSTEMMEM;
-    hr = _d3d_device->CreateOffscreenPlainSurface(w, h, _screen->_display_mode.Format,
-           pool,
-           &temp_surface,
-           NULL);
+    hr = _d3d_device->CreateOffscreenPlainSurface(
+          surface_description.Width,
+          surface_description.Height,
+          surface_description.Format,
+          pool,
+          &temp_surface,
+          NULL);
     if (FAILED(hr)) {
     if (FAILED(hr)) {
       dxgsg9_cat.error()
       dxgsg9_cat.error()
   << "CreateImageSurface failed in copy_pixel_buffer()"
   << "CreateImageSurface failed in copy_pixel_buffer()"