iFrame
This commit is contained in:
parent
c3c39a77cd
commit
e84950178f
3 changed files with 14 additions and 1 deletions
1
.gitignore
vendored
1
.gitignore
vendored
|
|
@ -6,3 +6,4 @@ wlr-layer-shell-unstable-v1-protocol.h
|
||||||
wlr-layer-shell-unstable-v1-protocol.c
|
wlr-layer-shell-unstable-v1-protocol.c
|
||||||
xdg-shell-protocol.h
|
xdg-shell-protocol.h
|
||||||
xdg-shell-protocol.c
|
xdg-shell-protocol.c
|
||||||
|
shaders/
|
||||||
|
|
|
||||||
12
renderer.c
12
renderer.c
|
|
@ -45,6 +45,7 @@ const char *fragment_header_src =
|
||||||
"layout(location = 0) out vec4 color;\n"
|
"layout(location = 0) out vec4 color;\n"
|
||||||
"uniform vec2 iResolution;\n"
|
"uniform vec2 iResolution;\n"
|
||||||
"uniform float iTime;\n"
|
"uniform float iTime;\n"
|
||||||
|
"uniform int iFrame;\n"
|
||||||
"void mainImage(out vec4 fragColor, in vec2 fragCoord);\n"
|
"void mainImage(out vec4 fragColor, in vec2 fragCoord);\n"
|
||||||
"void main() {\n"
|
"void main() {\n"
|
||||||
" mainImage(color, gl_FragCoord.xy);\n"
|
" mainImage(color, gl_FragCoord.xy);\n"
|
||||||
|
|
@ -155,7 +156,11 @@ Renderer new_renderer() {
|
||||||
(void *)0
|
(void *)0
|
||||||
);
|
);
|
||||||
|
|
||||||
Renderer renderer = { "", 0, vao };
|
Renderer renderer;
|
||||||
|
renderer.shader_path = "";
|
||||||
|
renderer.shader = 0;
|
||||||
|
renderer.vao = vao;
|
||||||
|
renderer.frame_nr = 0;
|
||||||
return renderer;
|
return renderer;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -177,6 +182,8 @@ void render(Renderer *state, int w, int h, double time, char *shader_path, int r
|
||||||
state->shader_path = shader_path;
|
state->shader_path = shader_path;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
state->frame_nr++;
|
||||||
|
|
||||||
// Rendorrrr
|
// Rendorrrr
|
||||||
glViewport(0, 0, w, h);
|
glViewport(0, 0, w, h);
|
||||||
|
|
||||||
|
|
@ -192,6 +199,9 @@ void render(Renderer *state, int w, int h, double time, char *shader_path, int r
|
||||||
int uniform_iTime = glGetUniformLocation(state->shader, "iTime");
|
int uniform_iTime = glGetUniformLocation(state->shader, "iTime");
|
||||||
glUniform1f(uniform_iTime, (float)time);
|
glUniform1f(uniform_iTime, (float)time);
|
||||||
|
|
||||||
|
int uniform_iFrame = glGetUniformLocation(state->shader, "iFrame");
|
||||||
|
glUniform1i(uniform_iFrame, state->frame_nr);
|
||||||
|
|
||||||
glBindVertexArray(state->vao);
|
glBindVertexArray(state->vao);
|
||||||
glDrawArrays(GL_TRIANGLES, 0, 6);
|
glDrawArrays(GL_TRIANGLES, 0, 6);
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -7,6 +7,8 @@ typedef struct Renderer {
|
||||||
char *shader_path;
|
char *shader_path;
|
||||||
unsigned int shader;
|
unsigned int shader;
|
||||||
unsigned int vao;
|
unsigned int vao;
|
||||||
|
/// The currently rendered frame.
|
||||||
|
unsigned int frame_nr;
|
||||||
struct stat shader_file_modified;
|
struct stat shader_file_modified;
|
||||||
} Renderer;
|
} Renderer;
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue