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() {
|
||||
gl_PointSize = size;
|
||||
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]) {
|
||||
let inner_buffer = self.mapped_slice_mut().unwrap();
|
||||
inner_buffer.copy_from_slice(data);
|
||||
pub unsafe fn fill<T: Sized>(&mut self, data: &[T]) {
|
||||
let slice = self.mapped_slice_mut().unwrap();
|
||||
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)?;
|
||||
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");
|
||||
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 {
|
||||
let data: [u8; 16] = std::mem::transmute([-0.5f32, 0.0f32, 0.0f32, 1.0f32]);
|
||||
buffer1.fill(&data);
|
||||
}
|
||||
|
||||
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]);
|
||||
buffer2.fill(&data);
|
||||
}
|
||||
buffer1.fill(&[
|
||||
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, pbuflen2 as u64 * nvertex as u64)?;
|
||||
unsafe { buffer2.fill(&[15.0f32, 0.0f32, 1.0f32, 0.0f32, 1.0f32]) };
|
||||
|
||||
let vertex_attrib_descs = [
|
||||
vk::VertexInputAttributeDescription {
|
||||
|
|
@ -149,12 +152,12 @@ impl EngineInstance {
|
|||
let vertex_binding_descs = [
|
||||
vk::VertexInputBindingDescription {
|
||||
binding: 0,
|
||||
stride: 16,
|
||||
input_rate: vk::VertexInputRate::VERTEX,
|
||||
stride: pbuflen1,
|
||||
input_rate: vk::VertexInputRate::INSTANCE,
|
||||
},
|
||||
vk::VertexInputBindingDescription {
|
||||
binding: 1,
|
||||
stride: 20,
|
||||
stride: pbuflen2,
|
||||
input_rate: vk::VertexInputRate::VERTEX,
|
||||
},
|
||||
];
|
||||
|
|
@ -183,6 +186,8 @@ impl EngineInstance {
|
|||
&pipeline,
|
||||
buffer1.buffer,
|
||||
buffer2.buffer,
|
||||
nvertex,
|
||||
ninstance,
|
||||
)?;
|
||||
}
|
||||
|
||||
|
|
@ -391,6 +396,8 @@ impl EngineInstance {
|
|||
// buffers: &[vk::Buffer],
|
||||
buffer1: vk::Buffer,
|
||||
buffer2: vk::Buffer,
|
||||
vertex_count: u32,
|
||||
instance_count: u32,
|
||||
) -> Result<(), vk::Result> {
|
||||
let commandbuffer_begininfo = vk::CommandBufferBeginInfo::default();
|
||||
unsafe {
|
||||
|
|
@ -424,7 +431,7 @@ impl EngineInstance {
|
|||
);
|
||||
device.cmd_bind_vertex_buffers(commandbuffer, 0, &[buffer1], &[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.end_command_buffer(commandbuffer)?;
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue