fix atlas sometime fails
This commit is contained in:
parent
181f324473
commit
98f31172ab
1 changed files with 8 additions and 6 deletions
|
@ -142,7 +142,7 @@ impl DirectXAtlasState {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
let texture = self.push_texture(size, texture_kind);
|
let texture = self.push_texture(size, texture_kind)?;
|
||||||
texture.allocate(size)
|
texture.allocate(size)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -150,7 +150,7 @@ impl DirectXAtlasState {
|
||||||
&mut self,
|
&mut self,
|
||||||
min_size: Size<DevicePixels>,
|
min_size: Size<DevicePixels>,
|
||||||
kind: AtlasTextureKind,
|
kind: AtlasTextureKind,
|
||||||
) -> &mut DirectXAtlasTexture {
|
) -> Option<&mut DirectXAtlasTexture> {
|
||||||
const DEFAULT_ATLAS_SIZE: Size<DevicePixels> = Size {
|
const DEFAULT_ATLAS_SIZE: Size<DevicePixels> = Size {
|
||||||
width: DevicePixels(1024),
|
width: DevicePixels(1024),
|
||||||
height: DevicePixels(1024),
|
height: DevicePixels(1024),
|
||||||
|
@ -194,9 +194,11 @@ impl DirectXAtlasState {
|
||||||
};
|
};
|
||||||
let mut texture: Option<ID3D11Texture2D> = None;
|
let mut texture: Option<ID3D11Texture2D> = None;
|
||||||
unsafe {
|
unsafe {
|
||||||
|
// This only returns None if the device is lost, which we will recreate later.
|
||||||
|
// So it's ok to return None here.
|
||||||
self.device
|
self.device
|
||||||
.CreateTexture2D(&texture_desc, None, Some(&mut texture))
|
.CreateTexture2D(&texture_desc, None, Some(&mut texture))
|
||||||
.unwrap();
|
.ok()?;
|
||||||
}
|
}
|
||||||
let texture = texture.unwrap();
|
let texture = texture.unwrap();
|
||||||
|
|
||||||
|
@ -209,7 +211,7 @@ impl DirectXAtlasState {
|
||||||
let mut view = None;
|
let mut view = None;
|
||||||
self.device
|
self.device
|
||||||
.CreateShaderResourceView(&texture, None, Some(&mut view))
|
.CreateShaderResourceView(&texture, None, Some(&mut view))
|
||||||
.unwrap();
|
.ok()?;
|
||||||
[view]
|
[view]
|
||||||
};
|
};
|
||||||
let atlas_texture = DirectXAtlasTexture {
|
let atlas_texture = DirectXAtlasTexture {
|
||||||
|
@ -225,10 +227,10 @@ impl DirectXAtlasState {
|
||||||
};
|
};
|
||||||
if let Some(ix) = index {
|
if let Some(ix) = index {
|
||||||
texture_list.textures[ix] = Some(atlas_texture);
|
texture_list.textures[ix] = Some(atlas_texture);
|
||||||
texture_list.textures.get_mut(ix).unwrap().as_mut().unwrap()
|
texture_list.textures.get_mut(ix).unwrap().as_mut()
|
||||||
} else {
|
} else {
|
||||||
texture_list.textures.push(Some(atlas_texture));
|
texture_list.textures.push(Some(atlas_texture));
|
||||||
texture_list.textures.last_mut().unwrap().as_mut().unwrap()
|
texture_list.textures.last_mut().unwrap().as_mut()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue