Browse Source

Merge pull request #926 from BeamNG/primbuild_for_non_ffp

Fix PrimBuild with non Fixed Function Pipeline.
LuisAntonRebollo 10 years ago
parent
commit
60f4d4f282
2 changed files with 15 additions and 2 deletions
  1. 2 0
      Engine/source/gfx/gfxDevice.h
  2. 13 2
      Engine/source/gfx/primBuilder.cpp

+ 2 - 0
Engine/source/gfx/gfxDevice.h

@@ -868,6 +868,8 @@ public:
    /// Sets the current stateblock (actually activated in ::updateStates)
    virtual void setStateBlock( GFXStateBlock *block );
 
+   GFXStateBlock* getStateBlock() { return mNewStateBlock; }
+
    /// This sets a stateblock directly from the description
    /// structure.  Its acceptable to use this for debug rendering
    /// and other low frequency rendering tasks.

+ 13 - 2
Engine/source/gfx/primBuilder.cpp

@@ -179,8 +179,19 @@ void end( bool useGenericShaders )
       }
    }
 
-   if ( useGenericShaders )
-      GFX->setupGenericShaders( GFXDevice::GSModColorTexture );
+    if ( useGenericShaders )
+    {
+        GFXStateBlock *currentBlock = GFX->getStateBlock();
+        if (currentBlock && currentBlock->getDesc().samplersDefined)
+        {
+            if (currentBlock->getDesc().vertexColorEnable)
+                GFX->setupGenericShaders( GFXDevice::GSModColorTexture );
+            else
+                GFX->setupGenericShaders( GFXDevice::GSTexture );
+        }
+        else
+            GFX->setupGenericShaders( GFXDevice::GSColor );
+    }
 
    const GFXVertexPCT *srcVerts = mTempVertBuff.address();
    U32 numVerts = mCurVertIndex;