昨日作業した、シェーダへユニフォーム変数を渡すコードを記載します。
この日のコードからの差分になります。
まず頂点シェーダです。
#version 330 core
layout (location = 0) in vec3 Position;
uniform float pointSize;
void main()
{
gl_Position = vec4(Position, 1.0);
gl_PointSize = pointSize;
}
pointSizeという名前の、float型のユニフォーム変数です。
次に、この変数に値を渡すRustのコードです。
〜略〜
shader_program.set_used();
let point_size: f32 = 64.0;
unsafe {
let point_size_loc = gl::GetUniformLocation(shader_program.id(), c_str!("pointSize").as_ptr());
gl::Uniform1f(point_size_loc, point_size);
}
〜略〜
c_strはマクロで、以下のように定義されています。
macro_rules! c_str {
($literal:expr) => {
CStr::from_bytes_with_nul_unchecked(concat!($literal, "\0").as_bytes())
}
}
∩∩
(´・ω・)
_| ⊃/(___
/ └-(____/
 ̄ ̄ ̄ ̄ ̄ ̄ ̄