Teapot Loading

This commit is contained in:
Able 2022-03-29 07:07:56 -05:00
parent dfbb124ce3
commit 6b9869cd37
5 changed files with 2187 additions and 17 deletions

Binary file not shown.

Before

Width:  |  Height:  |  Size: 71 KiB

View file

@ -0,0 +1,9 @@
#version 140
out vec4 color;
void main() {
color = vec4(1.0, 0.0, 0.0, 1.0);
}

View file

@ -0,0 +1,10 @@
#version 140
in vec3 position;
in vec3 normal;
uniform mat4 matrix;
void main() {
gl_Position = matrix * vec4(position, 1.0);
}

View file

@ -1,6 +1,6 @@
#![feature(const_fn_trait_bound)] #![feature(const_fn_trait_bound)]
use std::io::Cursor; use std::{collections::HashMap, io::Cursor};
#[macro_use] #[macro_use]
extern crate glium; extern crate glium;
@ -136,6 +136,8 @@ fn main() {
let mut target = display.draw(); let mut target = display.draw();
target.clear_color(0.0, 0.0, 1.0, 1.0); target.clear_color(0.0, 0.0, 1.0, 1.0);
{
// draw the triangle
let uniforms = uniform! { let uniforms = uniform! {
matrix: [ matrix: [
[1.0, 0.0, 0.0, 0.0], [1.0, 0.0, 0.0, 0.0],
@ -144,8 +146,6 @@ fn main() {
[ t , 0.0, 0.0, 1.0f32], [ t , 0.0, 0.0, 1.0f32],
], ],
tex: &texture, tex: &texture,
}; };
target target
@ -157,6 +157,47 @@ fn main() {
&Default::default(), &Default::default(),
) )
.unwrap(); .unwrap();
}
{
// Teapot stage
let vertex_shader_src = include_str!("../assets/shaders/teapot/teapot.vert");
let fragment_shader_src = include_str!("../assets/shaders/teapot/teapot.frag");
let program =
glium::Program::from_source(&display, vertex_shader_src, fragment_shader_src, None)
.unwrap();
let positions = glium::VertexBuffer::new(&display, &teapot::VERTICES).unwrap();
let normals = glium::VertexBuffer::new(&display, &teapot::NORMALS).unwrap();
let indices = glium::IndexBuffer::new(
&display,
glium::index::PrimitiveType::TrianglesList,
&teapot::INDICES,
)
.unwrap();
let matrix = [
[0.01, 0.0, 0.0, 0.0],
[0.0, 0.01, 0.0, 0.0],
[0.0, 0.0, 0.01, 0.0],
[0.0, 0.0, 0.0, 1.0f32],
];
target
.draw(
(&positions, &normals),
&indices,
&program,
&uniform! { matrix: matrix },
&Default::default(),
)
.unwrap();
}
target.finish().unwrap(); target.finish().unwrap();
}); });
} }
mod teapot;
pub type ShaderList = HashMap<String, glium::Program>;

2110
src/teapot.rs Normal file

File diff suppressed because it is too large Load diff