Browse Source

fix some bugs

cxgeorge 24 years ago
parent
commit
7c485c0818

+ 12 - 3
panda/src/dxgsg8/dxGraphicsStateGuardian8.cxx

@@ -218,6 +218,7 @@ void make_D3DFORMAT_map(void) {
     INSERT_ELEM(A8R3G3B2);
     INSERT_ELEM(X4R4G4B4);
     INSERT_ELEM(A2B10G10R10);
+    INSERT_ELEM(G16R16);
     INSERT_ELEM(A8P8);
     INSERT_ELEM(P8);
     INSERT_ELEM(L8);
@@ -1907,6 +1908,14 @@ draw_prim_setup(const Geom *geom) {
          } else if(ColorBinding == G_OVERALL){
             GET_NEXT_COLOR();
 
+/*
+    Colorf tempcolor = geom->get_next_color(ci);                                    
+    if(!_color_transform_required) {                                                
+        _curD3Dcolor = Colorf_to_D3DCOLOR(tempcolor);                               
+    } else {                                                                        
+        transform_color(tempcolor,_curD3Dcolor);                                    
+    }
+*/
             _perVertex &= ~PER_COLOR;
             _perPrim &= ~PER_COLOR;
             _perComp &= ~PER_COLOR;
@@ -2003,11 +2012,11 @@ draw_prim_inner_loop(int nVerts, const Geom *geom, ushort perFlags) {
             }
         }
 
-        if (_curFVFflags & D3DFVF_NORMAL)
+        if (_CurFVFType & D3DFVF_NORMAL)
             add_to_FVFBuf((void *)&p_normal, 3*sizeof(float));
-        if (_curFVFflags & D3DFVF_DIFFUSE)
+        if (_CurFVFType & D3DFVF_DIFFUSE)
             add_DWORD_to_FVFBuf(_curD3Dcolor);
-        if (_curFVFflags & D3DFVF_TEXCOUNT_MASK)
+        if (_CurFVFType & D3DFVF_TEXCOUNT_MASK)
             add_to_FVFBuf((void *)&p_texcoord, sizeof(TexCoordf));
     }
 }

+ 4 - 5
panda/src/dxgsg8/dxGraphicsStateGuardian8.h

@@ -187,11 +187,7 @@ protected:
   void set_draw_buffer(const RenderBuffer &rb);
   void set_read_buffer(const RenderBuffer &rb);
 
-  DWORD _CurFVFType;
-  // for storage of the flexible vertex format
-  BYTE *_pCurFvfBufPtr,*_pFvfBufBasePtr;
   INLINE void add_to_FVFBuf(void *data,  size_t bytes) ;
-  WORD *_index_buf;  // base of malloced array
 
   bool                  _bDXisReady;
   HRESULT               _last_testcooplevel_result;
@@ -258,8 +254,11 @@ protected:
   Normalf   p_normal;  // still used to hold G_OVERALL, G_PER_PRIM values
   TexCoordf p_texcoord;
   D3DCOLOR  _curD3Dcolor;
-  DWORD     _curFVFflags;
   DWORD     _perPrim,_perVertex,_perComp;   //  these hold DrawLoopFlags bitmask values
+  DWORD     _CurFVFType;
+  // for storage of the flexible vertex format
+  BYTE *_pCurFvfBufPtr,*_pFvfBufBasePtr;
+  WORD *_index_buf;  // base of malloced array
 
   bool  _issued_color_enabled;      // WBD ADDED
   bool  _enable_all_color;

+ 1 - 1
panda/src/dxgsg8/dxTextureContext8.cxx

@@ -1507,7 +1507,7 @@ FillDDSurfTexturePixels(void) {
     Lev0Filter = D3DX_FILTER_LINEAR | D3DX_FILTER_DITHER;
 
     // filtering may be done here if texture if targetsize!=origsize
-    hr=D3DXLoadSurfaceFromMemory(pMipLevel0,(PALETTEENTRY*)NULL,(RECT*)NULL,(LPCVOID) pbuf,_PixBufD3DFmt,
+    hr=D3DXLoadSurfaceFromMemory(pMipLevel0,(PALETTEENTRY*)NULL,(RECT*)NULL,(LPCVOID) pbuf->_image.p(),_PixBufD3DFmt,
                                  OrigWidth*cNumColorChannels,(PALETTEENTRY*)NULL,&SrcSize,Lev0Filter,(D3DCOLOR)0x0);
     if(FAILED(hr)) {
        dxgsg_cat.error() << "FillDDSurfaceTexturePixels failed for "<< _tex->get_name() <<", D3DXLoadSurfFromMem returns hr = " << D3DERRORSTRING(hr);

+ 2 - 2
panda/src/dxgsg8/dxgsg8base.h

@@ -127,8 +127,8 @@ typedef enum {
     A8_FLAG =           FLG(8),
     A8R3G3B2_FLAG =     FLG(9),
     X4R4G4B4_FLAG =     FLG(10),
-    A2B10G10R10_FLAG =  FLG(12),
-//  G16R16_FLAG =       FLG(13),  leaving this 1 out to fit in 32 bits
+    A2B10G10R10_FLAG =  FLG(11),
+    G16R16_FLAG =       FLG(12),
     A8P8_FLAG =         FLG(13),
     P8_FLAG =           FLG(14),
     L8_FLAG =           FLG(15),