Add support for single float uniforms to `pathfinder_gpu`
This commit is contained in:
parent
9260dbce93
commit
fa54868eb1
|
@ -153,6 +153,9 @@ impl GLDevice {
|
|||
fn set_uniform(&self, uniform: &GLUniform, data: &UniformData) {
|
||||
unsafe {
|
||||
match *data {
|
||||
UniformData::Float(value) => {
|
||||
gl::Uniform1f(uniform.location, value); ck();
|
||||
}
|
||||
UniformData::Int(value) => {
|
||||
gl::Uniform1i(uniform.location, value); ck();
|
||||
}
|
||||
|
|
|
@ -151,6 +151,7 @@ pub enum ShaderKind {
|
|||
|
||||
#[derive(Clone, Copy)]
|
||||
pub enum UniformData {
|
||||
Float(f32),
|
||||
Int(i32),
|
||||
Mat2(F32x4),
|
||||
Mat4([F32x4; 4]),
|
||||
|
|
|
@ -797,6 +797,9 @@ impl MetalDevice {
|
|||
for &(_, uniform_data) in render_state.uniforms.iter() {
|
||||
let start_index = uniform_buffer_data.len();
|
||||
match uniform_data {
|
||||
UniformData::Float(value) => {
|
||||
uniform_buffer_data.write_f32::<NativeEndian>(value).unwrap()
|
||||
}
|
||||
UniformData::Int(value) => {
|
||||
uniform_buffer_data.write_i32::<NativeEndian>(value).unwrap()
|
||||
}
|
||||
|
@ -1145,6 +1148,9 @@ impl UniformDataExt for UniformData {
|
|||
unsafe {
|
||||
match *self {
|
||||
UniformData::TextureUnit(_) => None,
|
||||
UniformData::Float(ref data) => {
|
||||
Some(slice::from_raw_parts(data as *const f32 as *const u8, 4 * 1))
|
||||
}
|
||||
UniformData::Int(ref data) => {
|
||||
Some(slice::from_raw_parts(data as *const i32 as *const u8, 4 * 1))
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue