aboutsummaryrefslogtreecommitdiff
path: root/stockton-render/src/draw/context.rs
diff options
context:
space:
mode:
Diffstat (limited to 'stockton-render/src/draw/context.rs')
-rw-r--r--stockton-render/src/draw/context.rs24
1 files changed, 9 insertions, 15 deletions
diff --git a/stockton-render/src/draw/context.rs b/stockton-render/src/draw/context.rs
index db543a4..d4b1f84 100644
--- a/stockton-render/src/draw/context.rs
+++ b/stockton-render/src/draw/context.rs
@@ -123,7 +123,7 @@ pub struct RenderingContext<'a> {
impl<'a> RenderingContext<'a> {
/// Create a new RenderingContext for the given window.
- pub fn new(window: &Window) -> Result<Self, error::CreationError> {
+ pub fn new<T: HasTextures>(window: &Window, file: &T) -> Result<Self, error::CreationError> {
// Create surface
let (instance, mut surface, mut adapters) = unsafe {
use hal::Instance;
@@ -136,7 +136,7 @@ impl<'a> RenderingContext<'a> {
};
// TODO: Properly figure out which adapter to use
- let adapter = adapters.remove(0);
+ let mut adapter = adapters.remove(0);
// Device & Queue group
let (mut device, mut queue_group) = {
@@ -263,7 +263,10 @@ impl<'a> RenderingContext<'a> {
};
// Texture store
- let texture_store = TextureStore::new(&mut device, INITIAL_TEX_SIZE)?;
+ let texture_store = TextureStore::new(&mut device,
+ &mut adapter,
+ &mut queue_group.queues[0],
+ &mut cmd_pool, file)?;
// Camera
// TODO: Settings
@@ -467,15 +470,6 @@ impl<'a> RenderingContext<'a> {
Ok((format, viewport, extent, swapchain, backbuffer))
}
- /// Load the given image into the texturestore, returning the index or an error.
- pub fn add_texture(&mut self, image: RgbaImage) -> Result<usize, &'static str> {
- self.texture_store.add_texture(image,
- &mut self.device,
- &mut self.adapter,
- &mut self.queue_group.queues[0],
- &mut self.cmd_pool)
- }
-
#[allow(clippy::type_complexity)]
fn create_pipeline<T>(device: &mut Device, extent: hal::image::Extent, subpass: &hal::pass::Subpass<back::Backend>, set_layouts: T) -> Result<
(
@@ -700,7 +694,7 @@ impl<'a> RenderingContext<'a> {
buffer.bind_graphics_pipeline(&self.pipeline);
let mut descriptor_sets: ArrayVec<[_; 1]> = ArrayVec::new();
- descriptor_sets.push(&self.texture_store.descriptor_set);
+ descriptor_sets.push(self.texture_store.get_chunk_descriptor_set(0));
buffer.bind_graphics_descriptor_sets(
&self.pipeline_layout,
@@ -773,11 +767,11 @@ impl<'a> RenderingContext<'a> {
/// Load all active faces into the vertex buffers for drawing
// TODO: This is just a POC, we need to restructure things a lot for actually texturing, etc
- pub fn set_active_faces<M: MinBSPFeatures<VulkanSystem>>(&mut self, faces: Vec<u32>, file: &M) -> () {
+ pub fn set_active_faces<M: MinBSPFeatures<VulkanSystem>>(&mut self, faces: &Vec<u32>, file: &M) -> () {
let mut curr_vert_idx: usize = 0;
let mut curr_idx_idx: usize = 0;
- for face in faces.into_iter().map(|idx| file.get_face(idx)) {
+ for face in faces.into_iter().map(|idx| file.get_face(*idx)) {
if face.face_type == FaceType::Polygon || face.face_type == FaceType::Mesh {
let base = face.vertices_idx.start;