2
0
Эх сурвалжийг харах

implement prepare_display_region

cxgeorge 23 жил өмнө
parent
commit
eeda66f4e4

+ 12 - 22
panda/src/dxgsg/dxGraphicsStateGuardian.cxx

@@ -959,34 +959,24 @@ do_clear(const RenderBuffer &buffer) {
 ////////////////////////////////////////////////////////////////////
 ////////////////////////////////////////////////////////////////////
 void DXGraphicsStateGuardian::
 void DXGraphicsStateGuardian::
 prepare_display_region() {
 prepare_display_region() {
-    if (_current_display_region == (DisplayRegion*)0L) {
+   if (_current_display_region == (DisplayRegion*)0L) {
         dxgsg_cat.error()
         dxgsg_cat.error()
         << "Invalid NULL display region in prepare_display_region()\n";
         << "Invalid NULL display region in prepare_display_region()\n";
     } else if (_current_display_region != _actual_display_region) {
     } else if (_current_display_region != _actual_display_region) {
         _actual_display_region = _current_display_region;
         _actual_display_region = _current_display_region;
 
 
-#ifndef NO_MULTIPLE_DISPLAY_REGIONS
-    int l, b, w, h;
-    _actual_display_region->get_region_pixels(l, b, w, h);
-    GLint x = GLint(l);
-    GLint y = GLint(b);
-    GLsizei width = GLsizei(w);
-    GLsizei height = GLsizei(h);
-#ifdef WBD_GL_MODE
-//    call_glScissor( x, y, width, height );
-//    call_glViewport( x, y, width, height );
-#else
-    if ( _scissor_x != x || _scissor_y != y ||
-            _scissor_width != width || _scissor_height != height )
-        {
-        _scissor_x = x; _scissor_y = y;
-        _scissor_width = width; _scissor_height = height;
-        RECT cliprect;
-        SetRect(&cliprect, x, y, x+width, y+height );
-        set_clipper(cliprect);
+        int l, b, w, h;
+        _actual_display_region->get_region_pixels(l, b, w, h);
+
+        // Create the viewport
+        D3DVIEWPORT7 vp = {l,b,w,h,0.0f,1.0f};
+        HRESULT hr = scrn.pD3DDevice->SetViewport( &vp );
+        if(FAILED(hr)) {
+            dxgsg_cat.fatal() << "SetViewport failed : result = " << ConvD3DErrorToString(hr) << endl;
+            exit(1);
         }
         }
-#endif   //WBD_GL_MODE
-#endif
+
+        // Note: for DX9, also change scissor clipping state here
     }
     }
 }
 }