Fix ITexture::lock for D3D9Texture with RTT cubemaps.
git-svn-id: svn://svn.code.sf.net/p/irrlicht/code/trunk@5653 dfc29bdd-3216-0410-991c-e03cc46cb475master
parent
3b7216ed7c
commit
bc525f5dcc
|
@ -216,7 +216,10 @@ void* CD3D9Texture::lock(E_TEXTURE_LOCK_MODE mode, u32 layer)
|
|||
{
|
||||
// Make RTT surface large enough for all miplevels (including 0)
|
||||
D3DSURFACE_DESC desc;
|
||||
if (Texture)
|
||||
Texture->GetLevelDesc(0, &desc);
|
||||
else if (CubeTexture)
|
||||
CubeTexture->GetLevelDesc(0, &desc);
|
||||
hr = Device->CreateOffscreenPlainSurface(desc.Width, desc.Height, desc.Format, D3DPOOL_SYSTEMMEM, &RTTSurface, 0);
|
||||
if (FAILED(hr))
|
||||
{
|
||||
|
@ -226,7 +229,10 @@ void* CD3D9Texture::lock(E_TEXTURE_LOCK_MODE mode, u32 layer)
|
|||
}
|
||||
|
||||
IDirect3DSurface9 *surface = 0;
|
||||
if (Texture)
|
||||
hr = Texture->GetSurfaceLevel(0, &surface);
|
||||
else if (CubeTexture)
|
||||
hr = CubeTexture->GetCubeMapSurface(static_cast<_D3DCUBEMAP_FACES>(layer), 0, &surface);
|
||||
if (FAILED(hr))
|
||||
{
|
||||
os::Printer::log("Could not lock DIRECT3D9 Texture", "Could not get surface.", ELL_ERROR);
|
||||
|
|
Loading…
Reference in New Issue