Skip to content

Commit b675b9b

Browse files
committed
Render: Add uniform for mouse position
1 parent 0fe43fc commit b675b9b

File tree

2 files changed

+15
-1
lines changed

2 files changed

+15
-1
lines changed

Libraries/Render/Render.cpp

+14-1
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ struct Vertex {
1818
enum UniformSlot {
1919
UniformSlot_Time,
2020
UniformSlot_Resolution,
21+
UniformSlot_MousePosition,
2122
UniformSlot__Count,
2223
};
2324

@@ -50,6 +51,7 @@ struct Render {
5051

5152
f32 time;
5253
Vec2f resolution;
54+
Vec2f mouse_position;
5355
};
5456

5557
static int compile_shader_source(StringView, GLenum type);
@@ -149,6 +151,12 @@ void render_set_resolution(Render* render, Vec2f resolution)
149151
}
150152
}
151153

154+
void render_set_mouse_position(Render* render, Vec2f position)
155+
{
156+
render->mouse_position = position;
157+
glUniform2f(render->uniforms[UniformSlot_MousePosition], position.x, position.y);
158+
}
159+
152160
int render_reload_shaders(Render* render)
153161
{
154162
auto vert = render->bundle->open("Shaders/simple.vert");
@@ -186,6 +194,7 @@ void render_use_simple(Render* render)
186194
glUseProgram(render->programs[Shader_Color]);
187195
uniform_location(render->programs[Shader_Color], render->uniforms);
188196
glUniform2f(render->uniforms[UniformSlot_Resolution], render->resolution.x, render->resolution.y);
197+
glUniform2f(render->uniforms[UniformSlot_MousePosition], render->mouse_position.x, render->mouse_position.y);
189198
glUniform1f(render->uniforms[UniformSlot_Time], render->time);
190199
}
191200

@@ -283,7 +292,7 @@ struct UniformDef {
283292
const char *name;
284293
};
285294

286-
static_assert(UniformSlot__Count == 2, "The amount of the shader uniforms have change. Please update the definition table accordingly");
295+
static_assert(UniformSlot__Count == 3, "The amount of the shader uniforms have change. Please update the definition table accordingly");
287296
static const UniformDef uniform_defs[UniformSlot__Count] = {
288297
[UniformSlot_Time] = {
289298
.slot = UniformSlot_Time,
@@ -293,6 +302,10 @@ static const UniformDef uniform_defs[UniformSlot__Count] = {
293302
.slot = UniformSlot_Resolution,
294303
.name = "resolution",
295304
},
305+
[UniformSlot_MousePosition] = {
306+
.slot = UniformSlot_MousePosition,
307+
.name = "mouse_position",
308+
},
296309
};
297310

298311

Libraries/Render/Render.h

+1
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ void render_destroy(Render*);
1212

1313
void render_set_time(Render*, f32 time);
1414
void render_set_resolution(Render*, Vec2f);
15+
void render_set_mouse_position(Render*, Vec2f);
1516
int render_reload_shaders(Render*);
1617
void render_flush(Render*);
1718

0 commit comments

Comments
 (0)