本文整理汇总了C++中HardwarePixelBufferSharedPtr::get方法的典型用法代码示例。如果您正苦于以下问题:C++ HardwarePixelBufferSharedPtr::get方法的具体用法?C++ HardwarePixelBufferSharedPtr::get怎么用?C++ HardwarePixelBufferSharedPtr::get使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类HardwarePixelBufferSharedPtr
的用法示例。
在下文中一共展示了HardwarePixelBufferSharedPtr::get方法的2个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: blit
void HardwarePixelBuffer::blit(const HardwarePixelBufferSharedPtr &src, const Image::Box &srcBox, const Image::Box &dstBox)
{
if (isLocked() || src->isLocked())
{
WIND_EXCEPT(Exception::ERR_INTERNAL_ERROR,
"Source and destination buffer may not be locked!",
"HardwarePixelBuffer::blit");
}
if (src.get() == this)
{
WIND_EXCEPT(Exception::ERR_INVALIDPARAMS,
"Source must not be the same object",
"HardwarePixelBuffer::blit");
}
const PixelBox &srclock = src->lock(srcBox, HBL_READ_ONLY);
LockOptions method = HBL_NORMAL;
if (dstBox.left == 0 && dstBox.top == 0 && dstBox.front == 0 && dstBox.right == mWidth && dstBox.bottom == mHeight && dstBox.back == mDepth)
{
method = HBL_DISCARD;
}
const PixelBox &dstlock = lock(dstBox, method);
if (dstlock.getWidth() != srclock.getWidth() || dstlock.getHeight() != srclock.getHeight() || dstlock.getDepth() != srclock.getDepth())
{
Image::scale(srclock, dstlock);
}
else
{
PixelUtil::bulkPixelConversion(srclock, dstlock);
}
unlock();
src->unlock();
}
示例2:
void D3D10HardwarePixelBuffer::blit(const HardwarePixelBufferSharedPtr &rsrc, const Image::Box &srcBox, const Image::Box &dstBox)
{
if (
(srcBox.getWidth() != dstBox.getWidth())
|| (srcBox.getHeight() != dstBox.getHeight())
|| (srcBox.getDepth() != dstBox.getDepth())
)
{
OGRE_EXCEPT(Exception::ERR_RENDERINGAPI_ERROR,
"D3D10 device cannot copy a subresource - source and dest size are not the same and they have to be the same in DX10.",
"D3D10HardwarePixelBuffer::blit");
}
D3D10_BOX srcBoxDx10 = OgreImageBoxToDx10Box(srcBox);
D3D10HardwarePixelBuffer * rsrcDx10 = static_cast<D3D10HardwarePixelBuffer *>(rsrc.get());
switch(mParentTexture->getTextureType()) {
case TEX_TYPE_1D:
{
mDevice->CopySubresourceRegion(
mParentTexture->GetTex1D(),
static_cast<UINT>(mSubresourceIndex),
static_cast<UINT>(dstBox.left),
0,
0,
rsrcDx10->mParentTexture->GetTex1D(),
static_cast<UINT>(rsrcDx10->mSubresourceIndex),
&srcBoxDx10);
if (mDevice.isError())
{
String errorDescription = mDevice.getErrorDescription();
OGRE_EXCEPT(Exception::ERR_RENDERINGAPI_ERROR,
"D3D10 device cannot copy 1d subresource Region\nError Description:" + errorDescription,
"D3D10HardwarePixelBuffer::blit");
}
}
break;
case TEX_TYPE_CUBE_MAP:
case TEX_TYPE_2D:
{
mDevice->CopySubresourceRegion(
mParentTexture->GetTex2D(),
static_cast<UINT>(mSubresourceIndex),
static_cast<UINT>(dstBox.left),
static_cast<UINT>(dstBox.top),
mFace,
rsrcDx10->mParentTexture->GetTex2D(),
static_cast<UINT>(rsrcDx10->mSubresourceIndex),
&srcBoxDx10);
if (mDevice.isError())
{
String errorDescription = mDevice.getErrorDescription();
OGRE_EXCEPT(Exception::ERR_RENDERINGAPI_ERROR,
"D3D10 device cannot copy 2d subresource Region\nError Description:" + errorDescription,
"D3D10HardwarePixelBuffer::blit");
}
}
break;
case TEX_TYPE_3D:
{
mDevice->CopySubresourceRegion(
mParentTexture->GetTex2D(),
static_cast<UINT>(mSubresourceIndex),
static_cast<UINT>(dstBox.left),
static_cast<UINT>(dstBox.top),
static_cast<UINT>(dstBox.front),
rsrcDx10->mParentTexture->GetTex2D(),
static_cast<UINT>(rsrcDx10->mSubresourceIndex),
&srcBoxDx10);
if (mDevice.isError())
{
String errorDescription = mDevice.getErrorDescription();
OGRE_EXCEPT(Exception::ERR_RENDERINGAPI_ERROR,
"D3D10 device cannot copy 3d subresource Region\nError Description:" + errorDescription,
"D3D10HardwarePixelBuffer::blit");
}
}
break;
}
_genMipmaps();
}