diff --git a/Engine/source/gfx/gfxDevice.cpp b/Engine/source/gfx/gfxDevice.cpp index 71d345f81..c5e5de495 100644 --- a/Engine/source/gfx/gfxDevice.cpp +++ b/Engine/source/gfx/gfxDevice.cpp @@ -292,8 +292,9 @@ GFXStateBlockRef GFXDevice::createStateBlock(const GFXStateBlockDesc& desc) PROFILE_SCOPE( GFXDevice_CreateStateBlock ); U32 hashValue = desc.getHashValue(); - if (mCurrentStateBlocks[hashValue]) - return mCurrentStateBlocks[hashValue]; + auto it = mCurrentStateBlocks.find(hashValue); + if (it != mCurrentStateBlocks.end()) + return it->value; GFXStateBlockRef result = createStateBlockInternal(desc); result->registerResourceWithDevice(this); diff --git a/Engine/source/gfx/gfxStateBlock.h b/Engine/source/gfx/gfxStateBlock.h index 570e804d1..21bfbaf1c 100644 --- a/Engine/source/gfx/gfxStateBlock.h +++ b/Engine/source/gfx/gfxStateBlock.h @@ -36,7 +36,7 @@ #include "core/color.h" #endif - +#pragma pack(push, 1) struct GFXSamplerStateDesc { GFXTextureAddressMode addressModeU; @@ -84,8 +84,10 @@ struct GFXSamplerStateDesc return !dMemcmp(this, &b, sizeof(GFXSamplerStateDesc)); } }; +#pragma pack(pop) /// GFXStateBlockDesc defines a render state, which is then used to create a GFXStateBlock instance. +#pragma pack(push, 1) struct GFXStateBlockDesc { // Blending @@ -189,6 +191,7 @@ struct GFXStateBlockDesc /// void setColorWrites( bool red, bool green, bool blue, bool alpha ); }; +#pragma pack(pop) class GFXStateBlock : public StrongRefBase, public GFXResource {