HardwareCounterBufferSharedPtr
 DefaultHardwareBufferManagerBase::createCounterBuffer(size_t sizeBytes,
                                                       HardwareBuffer::Usage usage, bool useShadowBuffer, const String& name)
 {
     DefaultHardwareCounterBuffer* ub = OGRE_NEW DefaultHardwareCounterBuffer(this, sizeBytes, usage, useShadowBuffer);
     return HardwareCounterBufferSharedPtr(ub);
 }
	HardwareCounterBuffer::HardwareCounterBuffer(HardwareBufferManagerBase* mgr, size_t sizeBytes, 
									HardwareBuffer::Usage usage, bool useShadowBuffer, const String& name)
		: HardwareBuffer(usage, false, useShadowBuffer)
		, mName(name)
	{
		// Calculate the size of the vertices
        mSizeInBytes = sizeBytes;

        // Create a shadow buffer if required
        if (mUseShadowBuffer)
        {
            mShadowBuffer = OGRE_NEW DefaultHardwareCounterBuffer(mMgr, sizeBytes, HardwareBuffer::HBU_DYNAMIC, false);
        }
	}