🚧 Working on the text stream code
parent
26fc58cdd0
commit
6602e36e5b
|
@ -561,7 +561,7 @@ impl GameGraphics {
|
||||||
|
|
||||||
let texture_sky = Texture::from_file ("sky.png");
|
let texture_sky = Texture::from_file ("sky.png");
|
||||||
let texture_grass = Texture::from_file ("grass.png");
|
let texture_grass = Texture::from_file ("grass.png");
|
||||||
let texture_font = Texture::from_file ("font.png");
|
let texture_font = Texture::from_file ("checkerboard.png");
|
||||||
|
|
||||||
let (pitch_colors, grass_index) = {
|
let (pitch_colors, grass_index) = {
|
||||||
let silver = (255.0, 255.0, 255.0);
|
let silver = (255.0, 255.0, 255.0);
|
||||||
|
@ -812,7 +812,14 @@ impl GameGraphics {
|
||||||
let text_stream = TriangleStream {
|
let text_stream = TriangleStream {
|
||||||
verts: gpu_buffers::VertexBuffer::streaming (4 * 5 * 6 * 1024),
|
verts: gpu_buffers::VertexBuffer::streaming (4 * 5 * 6 * 1024),
|
||||||
indices: {
|
indices: {
|
||||||
let v: Vec <u32> = (0u32..6 * 1024).collect ();
|
let quad = [
|
||||||
|
0, 1, 2,
|
||||||
|
0, 2, 3,
|
||||||
|
];
|
||||||
|
|
||||||
|
let v: Vec <u32> = (0u32..1024).map (|i| {
|
||||||
|
quad.iter ().map (move |j| 6 * i + j)
|
||||||
|
}).flatten ().collect ();
|
||||||
gpu_buffers::IndexBuffer::from_slice_u32 (&v)
|
gpu_buffers::IndexBuffer::from_slice_u32 (&v)
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
@ -1107,41 +1114,54 @@ impl GameGraphics {
|
||||||
|
|
||||||
let font_size = (8.0, 18.0);
|
let font_size = (8.0, 18.0);
|
||||||
|
|
||||||
let mvp = Mat4::from_scale ((2.0 * 256.0 / screen_size.0, 2.0 * 256.0 / screen_size.1, 1.0).into ());
|
let mvp =
|
||||||
|
Mat4::from_translation (Vec3::from ((-1.0, -1.0, 0.0))) *
|
||||||
|
Mat4::from_scale ((2.0 / screen_size.0, 2.0 / screen_size.1, 1.0).into ());
|
||||||
glezz::uniform_matrix_4fv (unis [&MVP], &mvp);
|
glezz::uniform_matrix_4fv (unis [&MVP], &mvp);
|
||||||
|
|
||||||
let pos: Vec <f32> = vec! [
|
let pos: Vec <f32> = vec! [
|
||||||
-1.0, 0.0, 0.0,
|
|
||||||
0.0, 0.0, 0.0,
|
0.0, 0.0, 0.0,
|
||||||
0.0, 1.0, 0.0,
|
256.0, 0.0, 0.0,
|
||||||
-1.0, 1.0, 0.0,
|
256.0, 256.0, 0.0,
|
||||||
|
0.0, 256.0, 0.0,
|
||||||
];
|
];
|
||||||
|
|
||||||
use std::convert::TryInto;
|
use std::convert::TryInto;
|
||||||
|
|
||||||
|
let eps = 0.0 / 256.0;
|
||||||
|
|
||||||
let uv: Vec <f32> = vec! [
|
let uv: Vec <f32> = vec! [
|
||||||
0.0, 1.0,
|
0.0 + eps, 1.0 + eps,
|
||||||
1.0, 1.0,
|
1.0 + eps, 1.0 + eps,
|
||||||
1.0, 0.0,
|
1.0 + eps, 0.0 + eps,
|
||||||
0.0, 0.0,
|
0.0 + eps, 0.0 + eps,
|
||||||
];
|
];
|
||||||
|
|
||||||
let indices: Vec <u32> = vec! [
|
self.text_stream.verts.bind ();
|
||||||
0, 1, 2,
|
self.text_stream.indices.bind ();
|
||||||
0, 2, 3,
|
|
||||||
];
|
|
||||||
|
|
||||||
unsafe {
|
unsafe {
|
||||||
use renderable_model::attributes::*;
|
use renderable_model::attributes::*;
|
||||||
use std::ffi::c_void;
|
use std::ffi::c_void;
|
||||||
|
|
||||||
gl::BindBuffer (gl::ARRAY_BUFFER, 0);
|
gl::BufferSubData (
|
||||||
gl::BindBuffer (gl::ELEMENT_ARRAY_BUFFER, 0);
|
gl::ARRAY_BUFFER,
|
||||||
|
0.try_into ().unwrap (),
|
||||||
|
(4 * 4 * 3).try_into ().unwrap (),
|
||||||
|
&pos [0] as *const f32 as *const c_void
|
||||||
|
);
|
||||||
|
|
||||||
gl::VertexAttribPointer (attrs [POS].unwrap (), 3, gl::FLOAT, 0u8, 4 * 3, &pos [0] as *const f32 as *const c_void);
|
gl::BufferSubData (
|
||||||
gl::VertexAttribPointer (attrs [UV].unwrap (), 2, gl::FLOAT, 0u8, 4 * 2, &uv [0] as *const f32 as *const c_void);
|
gl::ARRAY_BUFFER,
|
||||||
|
(4 * 4 * 3).try_into ().unwrap (),
|
||||||
|
(4 * 4 * 2).try_into ().unwrap (),
|
||||||
|
&uv [0] as *const f32 as *const c_void
|
||||||
|
);
|
||||||
|
|
||||||
gl::DrawRangeElements (gl::TRIANGLES, 0, 6, 6, gl::UNSIGNED_INT, &indices [0] as *const u32 as *const c_void);
|
gl::VertexAttribPointer (attrs [POS].unwrap (), 3, gl::FLOAT, 0u8, 4 * 3, 0 as *const f32 as *const c_void);
|
||||||
|
gl::VertexAttribPointer (attrs [UV].unwrap (), 2, gl::FLOAT, 0u8, 4 * 2, (4 * 4 * 3) as *const f32 as *const c_void);
|
||||||
|
|
||||||
|
gl::DrawRangeElements (gl::TRIANGLES, 0, 6, 6, gl::UNSIGNED_INT, 0 as *const u32 as *const c_void);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
|
@ -39,8 +39,8 @@ impl Texture {
|
||||||
|
|
||||||
gl::TexParameteri (gl::TEXTURE_2D, gl::TEXTURE_WRAP_S, gl::CLAMP_TO_EDGE as i32);
|
gl::TexParameteri (gl::TEXTURE_2D, gl::TEXTURE_WRAP_S, gl::CLAMP_TO_EDGE as i32);
|
||||||
gl::TexParameteri (gl::TEXTURE_2D, gl::TEXTURE_WRAP_T, gl::CLAMP_TO_EDGE as i32);
|
gl::TexParameteri (gl::TEXTURE_2D, gl::TEXTURE_WRAP_T, gl::CLAMP_TO_EDGE as i32);
|
||||||
gl::TexParameteri (gl::TEXTURE_2D, gl::TEXTURE_MIN_FILTER, gl::NEAREST as i32);
|
gl::TexParameteri (gl::TEXTURE_2D, gl::TEXTURE_MIN_FILTER, gl::LINEAR as i32);
|
||||||
gl::TexParameteri (gl::TEXTURE_2D, gl::TEXTURE_MAG_FILTER, gl::NEAREST as i32);
|
gl::TexParameteri (gl::TEXTURE_2D, gl::TEXTURE_MAG_FILTER, gl::LINEAR as i32);
|
||||||
|
|
||||||
id
|
id
|
||||||
};
|
};
|
||||||
|
|
Loading…
Reference in New Issue