Bläddra i källkod

ScratchBuffer: unsigned to signed | Graphics: style

1vanK 3 år sedan
förälder
incheckning
f9d16d03ba

+ 7 - 7
Source/Urho3D/AngelScript/Generated_Members.h

@@ -4314,11 +4314,11 @@ template <class T> void RegisterMembers_SceneResolver(asIScriptEngine* engine, c
 // struct ScratchBuffer | File: ../Graphics/Graphics.h
 template <class T> void RegisterMembers_ScratchBuffer(asIScriptEngine* engine, const char* className)
 {
-    // SharedArrayPtr<unsigned char> ScratchBuffer::data_
-    // Error: type "SharedArrayPtr<unsigned char>" can not automatically bind
+    // SharedArrayPtr<u8> ScratchBuffer::data_
+    // Error: type "SharedArrayPtr<u8>" can not automatically bind
 
-    // unsigned ScratchBuffer::size_
-    engine->RegisterObjectProperty(className, "uint size", offsetof(T, size_));
+    // i32 ScratchBuffer::size_
+    engine->RegisterObjectProperty(className, "int size", offsetof(T, size_));
 
     // bool ScratchBuffer::reserved_
     engine->RegisterObjectProperty(className, "bool reserved", offsetof(T, reserved_));
@@ -10004,7 +10004,7 @@ template <class T> void RegisterMembers_Graphics(asIScriptEngine* engine, const
     // Error: type "const void*" can not automatically bind
     // void Graphics::RemoveGPUObject(GPUObject* object)
     // Error: type "GPUObject*" can not automatically bind
-    // void* Graphics::ReserveScratchBuffer(unsigned size)
+    // void* Graphics::ReserveScratchBuffer(i32 size)
     // Error: type "void*" can not automatically bind
     // void Graphics::SetExternalWindow(void* window)
     // Error: type "void*" can not automatically bind
@@ -10272,8 +10272,8 @@ template <class T> void RegisterMembers_Graphics(asIScriptEngine* engine, const
     // StencilOp Graphics::GetStencilPass() const
     engine->RegisterObjectMethod(className, "StencilOp GetStencilPass() const", AS_METHODPR(T, GetStencilPass, () const, StencilOp), AS_CALL_THISCALL);
 
-    // unsigned Graphics::GetStencilRef() const
-    engine->RegisterObjectMethod(className, "uint GetStencilRef() const", AS_METHODPR(T, GetStencilRef, () const, unsigned), AS_CALL_THISCALL);
+    // u32 Graphics::GetStencilRef() const
+    engine->RegisterObjectMethod(className, "uint GetStencilRef() const", AS_METHODPR(T, GetStencilRef, () const, u32), AS_CALL_THISCALL);
 
     // bool Graphics::GetStencilTest() const
     engine->RegisterObjectMethod(className, "bool GetStencilTest() const", AS_METHODPR(T, GetStencilTest, () const, bool), AS_CALL_THISCALL);

+ 22 - 20
Source/Urho3D/Graphics/Graphics.cpp

@@ -198,7 +198,7 @@ void Graphics::SetShaderParameter(StringHash param, const Variant& value)
 
     case VAR_BUFFER:
         {
-            const Vector<unsigned char>& buffer = value.GetBuffer();
+            const Vector<u8>& buffer = value.GetBuffer();
             if (buffer.Size() >= sizeof(float))
                 SetShaderParameter(param, reinterpret_cast<const float*>(&buffer[0]), buffer.Size() / sizeof(float));
         }
@@ -375,8 +375,10 @@ void Graphics::RemoveGPUObject(GPUObject* object)
     gpuObjects_.Remove(object);
 }
 
-void* Graphics::ReserveScratchBuffer(unsigned size)
+void* Graphics::ReserveScratchBuffer(i32 size)
 {
+    assert(size >= 0);
+
     if (!size)
         return nullptr;
 
@@ -384,33 +386,33 @@ void* Graphics::ReserveScratchBuffer(unsigned size)
         maxScratchBufferRequest_ = size;
 
     // First check for a free buffer that is large enough
-    for (Vector<ScratchBuffer>::Iterator i = scratchBuffers_.Begin(); i != scratchBuffers_.End(); ++i)
+    for (ScratchBuffer& scratchBuffer : scratchBuffers_)
     {
-        if (!i->reserved_ && i->size_ >= size)
+        if (!scratchBuffer.reserved_ && scratchBuffer.size_ >= size)
         {
-            i->reserved_ = true;
-            return i->data_.Get();
+            scratchBuffer.reserved_ = true;
+            return scratchBuffer.data_.Get();
         }
     }
 
     // Then check if a free buffer can be resized
-    for (Vector<ScratchBuffer>::Iterator i = scratchBuffers_.Begin(); i != scratchBuffers_.End(); ++i)
+    for (ScratchBuffer& scratchBuffer : scratchBuffers_)
     {
-        if (!i->reserved_)
+        if (!scratchBuffer.reserved_)
         {
-            i->data_ = new unsigned char[size];
-            i->size_ = size;
-            i->reserved_ = true;
+            scratchBuffer.data_ = new u8[size];
+            scratchBuffer.size_ = size;
+            scratchBuffer.reserved_ = true;
 
             URHO3D_LOGDEBUG("Resized scratch buffer to size " + String(size));
 
-            return i->data_.Get();
+            return scratchBuffer.data_.Get();
         }
     }
 
     // Finally allocate a new buffer
     ScratchBuffer newBuffer;
-    newBuffer.data_ = new unsigned char[size];
+    newBuffer.data_ = new u8[size];
     newBuffer.size_ = size;
     newBuffer.reserved_ = true;
     scratchBuffers_.Push(newBuffer);
@@ -425,11 +427,11 @@ void Graphics::FreeScratchBuffer(void* buffer)
     if (!buffer)
         return;
 
-    for (Vector<ScratchBuffer>::Iterator i = scratchBuffers_.Begin(); i != scratchBuffers_.End(); ++i)
+    for (ScratchBuffer& scratchBuffer : scratchBuffers_)
     {
-        if (i->reserved_ && i->data_.Get() == buffer)
+        if (scratchBuffer.reserved_ && scratchBuffer.data_.Get() == buffer)
         {
-            i->reserved_ = false;
+            scratchBuffer.reserved_ = false;
             return;
         }
     }
@@ -439,12 +441,12 @@ void Graphics::FreeScratchBuffer(void* buffer)
 
 void Graphics::CleanupScratchBuffers()
 {
-    for (Vector<ScratchBuffer>::Iterator i = scratchBuffers_.Begin(); i != scratchBuffers_.End(); ++i)
+    for (ScratchBuffer& scratchBuffer : scratchBuffers_)
     {
-        if (!i->reserved_ && i->size_ > maxScratchBufferRequest_ * 2 && i->size_ >= 1024 * 1024)
+        if (!scratchBuffer.reserved_ && scratchBuffer.size_ > maxScratchBufferRequest_ * 2 && scratchBuffer.size_ >= 1024 * 1024)
         {
-            i->data_ = maxScratchBufferRequest_ > 0 ? (new unsigned char[maxScratchBufferRequest_]) : nullptr;
-            i->size_ = maxScratchBufferRequest_;
+            scratchBuffer.data_ = maxScratchBufferRequest_ > 0 ? (new u8[maxScratchBufferRequest_]) : nullptr;
+            scratchBuffer.size_ = maxScratchBufferRequest_;
 
             URHO3D_LOGDEBUG("Resized scratch buffer to size " + String(maxScratchBufferRequest_));
         }

+ 6 - 6
Source/Urho3D/Graphics/Graphics.h

@@ -76,9 +76,9 @@ struct ScratchBuffer
     }
 
     /// Buffer data.
-    SharedArrayPtr<unsigned char> data_;
+    SharedArrayPtr<u8> data_;
     /// Data size.
-    unsigned size_;
+    i32 size_;
     /// Reserved flag.
     bool reserved_;
 };
@@ -642,7 +642,7 @@ public:
     StencilOp GetStencilZFail() const { return stencilZFail_; }
 
     /// Return stencil reference value.
-    unsigned GetStencilRef() const { return stencilRef_; }
+    u32 GetStencilRef() const { return stencilRef_; }
 
     /// Return stencil compare bitmask.
     unsigned GetStencilCompareMask() const { return stencilCompareMask_; }
@@ -696,7 +696,7 @@ public:
     /// Remove a GPU object. Called by GPUObject.
     void RemoveGPUObject(GPUObject* object);
     /// Reserve a CPU-side scratch buffer.
-    void* ReserveScratchBuffer(unsigned size);
+    void* ReserveScratchBuffer(i32 size);
     /// Free a CPU-side scratch buffer.
     void FreeScratchBuffer(void* buffer);
     /// Clean up too large scratch buffers.
@@ -1251,7 +1251,7 @@ private:
     /// Number of batches this frame.
     unsigned numBatches_{};
     /// Largest scratch buffer request this frame.
-    unsigned maxScratchBufferRequest_{};
+    i32 maxScratchBufferRequest_{};
     /// GPU objects.
     Vector<GPUObject*> gpuObjects_;
     /// Scratch buffers.
@@ -1321,7 +1321,7 @@ private:
     /// Stencil operation on depth fail.
     StencilOp stencilZFail_{};
     /// Stencil test reference value.
-    unsigned stencilRef_{};
+    u32 stencilRef_{};
     /// Stencil compare bitmask.
     unsigned stencilCompareMask_{};
     /// Stencil write bitmask.

+ 1 - 1
Source/Urho3D/GraphicsAPI/OpenGL/OGLGraphics.cpp

@@ -2023,7 +2023,7 @@ void Graphics::SetStencilTest_OGL(bool enable, CompareMode mode, StencilOp pass,
     {
         if (mode != stencilTestMode_ || stencilRef != stencilRef_ || compareMask != stencilCompareMask_)
         {
-            glStencilFunc(glCmpFunc[mode], stencilRef, compareMask);
+            glStencilFunc(glCmpFunc[mode], (GLint)stencilRef, compareMask);
             stencilTestMode_ = mode;
             stencilRef_ = stencilRef;
             stencilCompareMask_ = compareMask;