019: more points
This commit is contained in:
parent
862f6a70c8
commit
87b53d546a
3 changed files with 27 additions and 19 deletions
|
|
@ -9,5 +9,5 @@ layout(location = 0) out vec4 colourdata_for_the_fragmentshader;
|
||||||
void main() {
|
void main() {
|
||||||
gl_PointSize = size;
|
gl_PointSize = size;
|
||||||
gl_Position = position;
|
gl_Position = position;
|
||||||
colourdata_for_the_fragmentshader = vec4(0.4, 1.0, 0.5, 1.0);
|
colourdata_for_the_fragmentshader = colour;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -82,8 +82,9 @@ impl Buffer {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
pub unsafe fn fill(&mut self, data: &[u8]) {
|
pub unsafe fn fill<T: Sized>(&mut self, data: &[T]) {
|
||||||
let inner_buffer = self.mapped_slice_mut().unwrap();
|
let slice = self.mapped_slice_mut().unwrap();
|
||||||
inner_buffer.copy_from_slice(data);
|
let inner_buffer = slice.as_ptr() as *mut T;
|
||||||
|
inner_buffer.copy_from_nonoverlapping(data.as_ptr(), data.len());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -111,20 +111,23 @@ impl EngineInstance {
|
||||||
let renderpass = Self::init_renderpass(&device, surface_format.format)?;
|
let renderpass = Self::init_renderpass(&device, surface_format.format)?;
|
||||||
swapchain.create_framebuffers(&device, renderpass)?;
|
swapchain.create_framebuffers(&device, renderpass)?;
|
||||||
|
|
||||||
|
let pbuflen1: u32 = 16;
|
||||||
|
let pbuflen2: u32 = 20;
|
||||||
|
let nvertex: u32 = 1;
|
||||||
|
let ninstance: u32 = 6;
|
||||||
|
|
||||||
log::debug!("Create allocator");
|
log::debug!("Create allocator");
|
||||||
let mut allocator = BufferAllocator::init(&ash_instance, physical_device, &device)?;
|
let mut allocator = BufferAllocator::init(&ash_instance, physical_device, &device)?;
|
||||||
let mut buffer1 = allocator.create_buffer(&device, 16)?;
|
let mut buffer1 = allocator.create_buffer(&device, pbuflen1 as u64 * ninstance as u64)?;
|
||||||
|
|
||||||
unsafe {
|
unsafe {
|
||||||
let data: [u8; 16] = std::mem::transmute([-0.5f32, 0.0f32, 0.0f32, 1.0f32]);
|
buffer1.fill(&[
|
||||||
buffer1.fill(&data);
|
0.4f32, -0.2f32, 0.0f32, 1.0f32, 0.2f32, 0.0f32, 0.0f32, 1.0f32, -0.4f32, 0.2f32,
|
||||||
}
|
0.0f32, 1.0f32, 0.5f32, 0.0f32, 0.0f32, 1.0f32, 0.0f32, 0.2f32, 0.0f32, 1.0f32,
|
||||||
|
-0.5f32, 0.0f32, 0.0f32, 1.0f32,
|
||||||
let mut buffer2 = allocator.create_buffer(&device, 20)?;
|
])
|
||||||
unsafe {
|
};
|
||||||
let data: [u8; 20] = std::mem::transmute([5.0f32, 1.0f32, 1.0f32, 0.0f32, 1.0f32]);
|
let mut buffer2 = allocator.create_buffer(&device, pbuflen2 as u64 * nvertex as u64)?;
|
||||||
buffer2.fill(&data);
|
unsafe { buffer2.fill(&[15.0f32, 0.0f32, 1.0f32, 0.0f32, 1.0f32]) };
|
||||||
}
|
|
||||||
|
|
||||||
let vertex_attrib_descs = [
|
let vertex_attrib_descs = [
|
||||||
vk::VertexInputAttributeDescription {
|
vk::VertexInputAttributeDescription {
|
||||||
|
|
@ -149,12 +152,12 @@ impl EngineInstance {
|
||||||
let vertex_binding_descs = [
|
let vertex_binding_descs = [
|
||||||
vk::VertexInputBindingDescription {
|
vk::VertexInputBindingDescription {
|
||||||
binding: 0,
|
binding: 0,
|
||||||
stride: 16,
|
stride: pbuflen1,
|
||||||
input_rate: vk::VertexInputRate::VERTEX,
|
input_rate: vk::VertexInputRate::INSTANCE,
|
||||||
},
|
},
|
||||||
vk::VertexInputBindingDescription {
|
vk::VertexInputBindingDescription {
|
||||||
binding: 1,
|
binding: 1,
|
||||||
stride: 20,
|
stride: pbuflen2,
|
||||||
input_rate: vk::VertexInputRate::VERTEX,
|
input_rate: vk::VertexInputRate::VERTEX,
|
||||||
},
|
},
|
||||||
];
|
];
|
||||||
|
|
@ -183,6 +186,8 @@ impl EngineInstance {
|
||||||
&pipeline,
|
&pipeline,
|
||||||
buffer1.buffer,
|
buffer1.buffer,
|
||||||
buffer2.buffer,
|
buffer2.buffer,
|
||||||
|
nvertex,
|
||||||
|
ninstance,
|
||||||
)?;
|
)?;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -391,6 +396,8 @@ impl EngineInstance {
|
||||||
// buffers: &[vk::Buffer],
|
// buffers: &[vk::Buffer],
|
||||||
buffer1: vk::Buffer,
|
buffer1: vk::Buffer,
|
||||||
buffer2: vk::Buffer,
|
buffer2: vk::Buffer,
|
||||||
|
vertex_count: u32,
|
||||||
|
instance_count: u32,
|
||||||
) -> Result<(), vk::Result> {
|
) -> Result<(), vk::Result> {
|
||||||
let commandbuffer_begininfo = vk::CommandBufferBeginInfo::default();
|
let commandbuffer_begininfo = vk::CommandBufferBeginInfo::default();
|
||||||
unsafe {
|
unsafe {
|
||||||
|
|
@ -424,7 +431,7 @@ impl EngineInstance {
|
||||||
);
|
);
|
||||||
device.cmd_bind_vertex_buffers(commandbuffer, 0, &[buffer1], &[0]);
|
device.cmd_bind_vertex_buffers(commandbuffer, 0, &[buffer1], &[0]);
|
||||||
device.cmd_bind_vertex_buffers(commandbuffer, 1, &[buffer2], &[0]);
|
device.cmd_bind_vertex_buffers(commandbuffer, 1, &[buffer2], &[0]);
|
||||||
device.cmd_draw(commandbuffer, 1, 1, 0, 0);
|
device.cmd_draw(commandbuffer, vertex_count, instance_count, 0, 0);
|
||||||
device.cmd_end_render_pass(commandbuffer);
|
device.cmd_end_render_pass(commandbuffer);
|
||||||
device.end_command_buffer(commandbuffer)?;
|
device.end_command_buffer(commandbuffer)?;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue