Przeglądaj źródła

fix volatile buffer

change debugdraw to use volatile
fix volatile buffer wraparound
marauder2k7 1 miesiąc temu
rodzic
commit
267986a289

+ 2 - 2
Engine/source/gfx/gl/gfxGLCircularVolatileBuffer.h

@@ -201,6 +201,8 @@ public:
          if (mBufferFreePos < mBufferSize)
             mUsedRanges.push_back(UsedRange(mBufferFreePos, mBufferSize - 1));
 
+         init();
+
          // Reset free pos
          mBufferFreePos = 0;
 
@@ -224,8 +226,6 @@ public:
       if (GFXGL->mCapabilities.bufferStorage)
       {
          outPtr = static_cast<U8*>(mBufferPtr) + mBufferFreePos;
-         _getBufferData.mOffset = outOffset;
-         _getBufferData.mSize = size;
       }
       else if (GFXGL->glUseMap())
       {

+ 6 - 6
Engine/source/navigation/duDebugDrawTorque.cpp

@@ -245,7 +245,7 @@ void duDebugDrawTorque::end()
          box.maxExtents.set(-F32_MAX, -F32_MAX, -F32_MAX);
 
          GFXVertexBufferHandle<GFXVertexPCT> buffer;
-         buffer.set(GFX, batchVerts, GFXBufferTypeStatic);
+         buffer.set(GFX, batchVerts, GFXBufferTypeVolatile);
          GFXVertexPCT* verts = buffer.lock();
 
          for (U32 i = 0; i < linesThisBatch * vertsPerLine; ++i)
@@ -258,7 +258,7 @@ void duDebugDrawTorque::end()
 
          // --- Build index buffer
          GFXPrimitiveBufferHandle pb;
-         pb.set(GFX, linesThisBatch * 2, linesThisBatch, GFXBufferTypeStatic);
+         pb.set(GFX, linesThisBatch * 2, linesThisBatch, GFXBufferTypeVolatile);
          U16* indices = nullptr;
          pb.lock(&indices);
 
@@ -303,7 +303,7 @@ void duDebugDrawTorque::end()
          box.maxExtents.set(-F32_MAX, -F32_MAX, -F32_MAX);
 
          GFXVertexBufferHandle<GFXVertexPCT> buffer;
-         buffer.set(GFX, batchVerts, GFXBufferTypeStatic);
+         buffer.set(GFX, batchVerts, GFXBufferTypeVolatile);
          GFXVertexPCT* verts = buffer.lock();
 
          for (U32 i = 0; i < trisThisBatch * vertsPerTri; ++i)
@@ -317,7 +317,7 @@ void duDebugDrawTorque::end()
 
          // --- Build index buffer
          GFXPrimitiveBufferHandle pb;
-         pb.set(GFX, trisThisBatch*3, trisThisBatch, GFXBufferTypeStatic);
+         pb.set(GFX, trisThisBatch*3, trisThisBatch, GFXBufferTypeVolatile);
          U16* indices = nullptr;
          pb.lock(&indices);
 
@@ -363,7 +363,7 @@ void duDebugDrawTorque::end()
          box.maxExtents.set(-F32_MAX, -F32_MAX, -F32_MAX);
 
          GFXVertexBufferHandle<GFXVertexPCT> buffer;
-         buffer.set(GFX, batchVerts, GFXBufferTypeStatic);
+         buffer.set(GFX, batchVerts, GFXBufferTypeVolatile);
          GFXVertexPCT* verts = buffer.lock();
 
          U32 outIdx = 0;
@@ -383,7 +383,7 @@ void duDebugDrawTorque::end()
          buffer.unlock();
 
          GFXPrimitiveBufferHandle pb;
-         pb.set(GFX, batchIndices, quadsThisBatch*2, GFXBufferTypeStatic);
+         pb.set(GFX, batchIndices, quadsThisBatch*2, GFXBufferTypeVolatile);
          U16* indices = nullptr;
          pb.lock(&indices);