浏览代码

Allow creating forced headless (CPU-only) vertex & index buffers although the engine itself is running in headful mode. Useful for custom created physics only collision models.

Lasse Öörni 10 年之前
父节点
当前提交
befdd58483

+ 2 - 2
Source/Urho3D/Graphics/Direct3D11/D3D11IndexBuffer.cpp

@@ -33,9 +33,9 @@
 namespace Urho3D
 namespace Urho3D
 {
 {
 
 
-IndexBuffer::IndexBuffer(Context* context) :
+IndexBuffer::IndexBuffer(Context* context, bool forceHeadless) :
     Object(context),
     Object(context),
-    GPUObject(GetSubsystem<Graphics>()),
+    GPUObject(forceHeadless ? (Graphics*)0 : GetSubsystem<Graphics>()),
     indexCount_(0),
     indexCount_(0),
     indexSize_(0),
     indexSize_(0),
     lockState_(LOCK_NONE),
     lockState_(LOCK_NONE),

+ 1 - 1
Source/Urho3D/Graphics/Direct3D11/D3D11IndexBuffer.h

@@ -37,7 +37,7 @@ class URHO3D_API IndexBuffer : public Object, public GPUObject
 
 
 public:
 public:
     /// Construct.
     /// Construct.
-    IndexBuffer(Context* context);
+    IndexBuffer(Context* context, bool forceHeadless = false);
     /// Destruct.
     /// Destruct.
     virtual ~IndexBuffer();
     virtual ~IndexBuffer();
 
 

+ 2 - 2
Source/Urho3D/Graphics/Direct3D11/D3D11VertexBuffer.cpp

@@ -100,9 +100,9 @@ const unsigned VertexBuffer::elementFormats[] =
     DXGI_FORMAT_R32G32B32A32_FLOAT
     DXGI_FORMAT_R32G32B32A32_FLOAT
 };
 };
 
 
-VertexBuffer::VertexBuffer(Context* context) :
+VertexBuffer::VertexBuffer(Context* context, bool forceHeadless) :
     Object(context),
     Object(context),
-    GPUObject(GetSubsystem<Graphics>()),
+    GPUObject(forceHeadless ? (Graphics*)0 : GetSubsystem<Graphics>()),
     vertexCount_(0),
     vertexCount_(0),
     elementMask_(0),
     elementMask_(0),
     lockState_(LOCK_NONE),
     lockState_(LOCK_NONE),

+ 1 - 1
Source/Urho3D/Graphics/Direct3D11/D3D11VertexBuffer.h

@@ -36,7 +36,7 @@ class URHO3D_API VertexBuffer : public Object, public GPUObject
 
 
 public:
 public:
     /// Construct.
     /// Construct.
-    VertexBuffer(Context* context);
+    VertexBuffer(Context* context, bool forceHeadless = false);
     /// Destruct.
     /// Destruct.
     virtual ~VertexBuffer();
     virtual ~VertexBuffer();
 
 

+ 2 - 2
Source/Urho3D/Graphics/Direct3D9/D3D9IndexBuffer.cpp

@@ -33,9 +33,9 @@
 namespace Urho3D
 namespace Urho3D
 {
 {
 
 
-IndexBuffer::IndexBuffer(Context* context) :
+IndexBuffer::IndexBuffer(Context* context, bool forceHeadless) :
     Object(context),
     Object(context),
-    GPUObject(GetSubsystem<Graphics>()),
+    GPUObject(forceHeadless ? (Graphics*)0 : GetSubsystem<Graphics>()),
     indexCount_(0),
     indexCount_(0),
     indexSize_(0),
     indexSize_(0),
     pool_(D3DPOOL_MANAGED),
     pool_(D3DPOOL_MANAGED),

+ 1 - 1
Source/Urho3D/Graphics/Direct3D9/D3D9IndexBuffer.h

@@ -37,7 +37,7 @@ class URHO3D_API IndexBuffer : public Object, public GPUObject
 
 
 public:
 public:
     /// Construct.
     /// Construct.
-    IndexBuffer(Context* context);
+    IndexBuffer(Context* context, bool forceHeadless = false);
     /// Destruct.
     /// Destruct.
     virtual ~IndexBuffer();
     virtual ~IndexBuffer();
 
 

+ 2 - 2
Source/Urho3D/Graphics/Direct3D9/D3D9VertexBuffer.cpp

@@ -49,9 +49,9 @@ const unsigned VertexBuffer::elementSize[] =
     4 * sizeof(float) // Instancematrix3
     4 * sizeof(float) // Instancematrix3
 };
 };
 
 
-VertexBuffer::VertexBuffer(Context* context) :
+VertexBuffer::VertexBuffer(Context* context, bool forceHeadless) :
     Object(context),
     Object(context),
-    GPUObject(GetSubsystem<Graphics>()),
+    GPUObject(forceHeadless ? (Graphics*)0 : GetSubsystem<Graphics>()),
     vertexCount_(0),
     vertexCount_(0),
     elementMask_(0),
     elementMask_(0),
     pool_(D3DPOOL_MANAGED),
     pool_(D3DPOOL_MANAGED),

+ 1 - 1
Source/Urho3D/Graphics/Direct3D9/D3D9VertexBuffer.h

@@ -36,7 +36,7 @@ class URHO3D_API VertexBuffer : public Object, public GPUObject
 
 
 public:
 public:
     /// Construct.
     /// Construct.
-    VertexBuffer(Context* context);
+    VertexBuffer(Context* context, bool forceHeadless = false);
     /// Destruct.
     /// Destruct.
     virtual ~VertexBuffer();
     virtual ~VertexBuffer();
 
 

+ 2 - 2
Source/Urho3D/Graphics/OpenGL/OGLIndexBuffer.cpp

@@ -33,9 +33,9 @@
 namespace Urho3D
 namespace Urho3D
 {
 {
 
 
-IndexBuffer::IndexBuffer(Context* context) :
+IndexBuffer::IndexBuffer(Context* context, bool forceHeadless) :
     Object(context),
     Object(context),
-    GPUObject(GetSubsystem<Graphics>()),
+    GPUObject(forceHeadless ? (Graphics*)0 : GetSubsystem<Graphics>()),
     indexCount_(0),
     indexCount_(0),
     indexSize_(0),
     indexSize_(0),
     lockState_(LOCK_NONE),
     lockState_(LOCK_NONE),

+ 1 - 1
Source/Urho3D/Graphics/OpenGL/OGLIndexBuffer.h

@@ -37,7 +37,7 @@ class URHO3D_API IndexBuffer : public Object, public GPUObject
 
 
 public:
 public:
     /// Construct.
     /// Construct.
-    IndexBuffer(Context* context);
+    IndexBuffer(Context* context, bool forceHeadless = false);
     /// Destruct.
     /// Destruct.
     virtual ~IndexBuffer();
     virtual ~IndexBuffer();
 
 

+ 2 - 2
Source/Urho3D/Graphics/OpenGL/OGLVertexBuffer.cpp

@@ -100,9 +100,9 @@ const unsigned VertexBuffer::elementNormalize[] =
     GL_FALSE // Instancematrix3
     GL_FALSE // Instancematrix3
 };
 };
 
 
-VertexBuffer::VertexBuffer(Context* context) :
+VertexBuffer::VertexBuffer(Context* context, bool forceHeadless) :
     Object(context),
     Object(context),
-    GPUObject(GetSubsystem<Graphics>()),
+    GPUObject(forceHeadless ? (Graphics*)0 : GetSubsystem<Graphics>()),
     vertexCount_(0),
     vertexCount_(0),
     elementMask_(0),
     elementMask_(0),
     lockState_(LOCK_NONE),
     lockState_(LOCK_NONE),

+ 1 - 1
Source/Urho3D/Graphics/OpenGL/OGLVertexBuffer.h

@@ -36,7 +36,7 @@ class URHO3D_API VertexBuffer : public Object, public GPUObject
 
 
 public:
 public:
     /// Construct.
     /// Construct.
-    VertexBuffer(Context* context);
+    VertexBuffer(Context* context, bool forceHeadless = false);
     /// Destruct.
     /// Destruct.
     virtual ~VertexBuffer();
     virtual ~VertexBuffer();