Advertisement
Guest User

Untitled

a guest
Feb 27th, 2020
118
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.57 KB | None | 0 0
  1. extern crate wgpu_engine;
  2. extern crate winit;
  3.  
  4. use wgpu_engine::renderer::renderer_builder::RendererBuilder;
  5. use wgpu_engine::renderer::shader::Shader;
  6. use wgpu_engine::ShaderKind;
  7. use winit::dpi::LogicalSize;
  8. use winit::event::Event;
  9. use winit::event::WindowEvent;
  10. use winit::event_loop::{ControlFlow, EventLoop};
  11. use winit::window::WindowBuilder;
  12. use wgpu_engine::math::mat4::Mat4;
  13. use wgpu_engine::renderer::mesh::Mesh;
  14. use wgpu_engine::renderer::Renderer;
  15.  
  16. #[repr(C)]
  17. pub struct Vertex {
  18. position: [f32; 4],
  19. uv: [f32; 2],
  20. normal: [f32; 3]
  21. }
  22.  
  23. impl Vertex {
  24. pub fn new(position: [f32; 3], uv: [f32; 2], normal: [f32; 3]) -> Vertex {
  25. Vertex {
  26. position: [position[0], position[1], position[2], 1.0],
  27. uv,
  28. normal
  29. }
  30. }
  31. }
  32.  
  33. #[repr(C)]
  34. struct UniformBuffer {
  35. projection: Mat4,
  36. view: Mat4,
  37. model: Mat4
  38. }
  39.  
  40. fn main() {
  41. let mut event_loop = EventLoop::new();
  42. let window = WindowBuilder::new()
  43. .with_title("Engine")
  44. .with_inner_size(LogicalSize::new(640, 480))
  45. .with_visible(true)
  46. .build(&event_loop).unwrap();
  47.  
  48. let mut renderer: Renderer<_, Vertex> = RendererBuilder::new(&window)
  49. .add_vertex_shader(&Shader::new_from_source(include_str!("../shaders/vert.glsl"), ShaderKind::Vertex))
  50. .add_fragment_shader(&Shader::new_from_source(include_str!("../shaders/frag.glsl"), ShaderKind::Fragment))
  51. .set_culling(wgpu_engine::wgpu::FrontFace::Ccw, wgpu_engine::wgpu::CullMode::Back)
  52. .add_vertex_attribute(0, wgpu_engine::wgpu::VertexFormat::Float4)
  53. .add_vertex_attribute(1, wgpu_engine::wgpu::VertexFormat::Float2)
  54. .add_vertex_attribute(2, wgpu_engine::wgpu::VertexFormat::Float3)
  55. .add_texture(1)
  56. .set_sampler_location(2)
  57. .set_uniform_location(0)
  58. .build().unwrap();
  59.  
  60. let projection = Mat4::perspective(std::f32::consts::FRAC_PI_2, 640.0 / 480.0, 100.0, 0.1);
  61. let view = Mat4::identity();
  62. let model = Mat4::identity();
  63.  
  64. renderer.fill_uniform_buffer(
  65. &UniformBuffer {
  66. projection,
  67. view,
  68. model
  69. }
  70. );
  71.  
  72. event_loop.run(move |event, _, control_flow| {
  73. *control_flow = ControlFlow::Poll;
  74. match event {
  75. Event::WindowEvent { event: WindowEvent::CloseRequested, .. } => *control_flow = ControlFlow::Exit,
  76. Event::MainEventsCleared => window.request_redraw(),
  77. Event::RedrawRequested(_) => {
  78.  
  79. },
  80. _ => ()
  81. }
  82. });
  83. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement