Moved params_fbo from main to renderer

This commit is contained in:
Hoguchi-live 2023-01-15 15:11:31 +01:00
parent efcb0d4492
commit eec2f98812
8 changed files with 41 additions and 37 deletions

8
.gitignore vendored
View File

@ -1,8 +1,8 @@
# Other # Other
build/* build/**
assets/* assets/**
bin/* bin/**
.cache/* .cache/**
# Prerequisites # Prerequisites
*.d *.d

1
memchk.sh Executable file
View File

@ -0,0 +1 @@
valgrind --leak-check=yes ./bin/wotos ./assets/aa.mkv

View File

@ -41,11 +41,9 @@ void renderer_init(struct Renderer *self) {
{ .index = 0, .name = "texcoord" } { .index = 0, .name = "texcoord" }
}); });
// Define buffers
_renderer_mpv(self); _renderer_mpv(self);
_renderer_glyph(self); _renderer_glyph(self);
// Create bitmaps
self->atlas = makeBitmaps(); self->atlas = makeBitmaps();
} }
@ -57,6 +55,7 @@ void renderer_destroy(struct Renderer *self) {
vao_destroy(self->screenVAO); vao_destroy(self->screenVAO);
vbo_destroy(self->screenVBO); vbo_destroy(self->screenVBO);
free(self->params_fbo);
free(self); free(self);
} }
@ -102,9 +101,17 @@ void _renderer_mpv(struct Renderer *self) {
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, self->video_textureColorbuffer, 0); glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, self->video_textureColorbuffer, 0);
if (glCheckFramebufferStatus(GL_FRAMEBUFFER) != GL_FRAMEBUFFER_COMPLETE) if (glCheckFramebufferStatus(GL_FRAMEBUFFER) != GL_FRAMEBUFFER_COMPLETE){
printf("ERROR::FRAMEBUFFER:: VIDEO Framebuffer #%d is not complete!\n", self->video_framebuffer); printf("ERROR::FRAMEBUFFER:: VIDEO Framebuffer #%d is not complete!\n", self->video_framebuffer);
}
self->mpv_fbo = (mpv_opengl_fbo){(int)(self->video_framebuffer), fbo_width, fbo_height, 0}; self->mpv_fbo = (mpv_opengl_fbo){(int)(self->video_framebuffer), fbo_width, fbo_height, 0};
self->params_fbo = malloc(sizeof(mpv_render_param [3]));
memcpy(self->params_fbo, (mpv_render_param [3]){
{MPV_RENDER_PARAM_OPENGL_FBO, &(self->mpv_fbo)},
{MPV_RENDER_PARAM_FLIP_Y, &flip_y},
{MPV_RENDER_PARAM_INVALID, NULL}}, sizeof(mpv_render_param [3]));
} }
/* /*

View File

@ -16,6 +16,8 @@ enum ShaderType {
SHADER_BASIC_TEXTURE SHADER_BASIC_TEXTURE
}; };
extern int flip_y;
struct Renderer{ struct Renderer{
struct Shader shaders[SHADERS_LAST + 1]; struct Shader shaders[SHADERS_LAST + 1];

View File

@ -3,42 +3,32 @@
#include "gfx/vbo.h" #include "gfx/vbo.h"
#include "glad/glad.h" #include "glad/glad.h"
static inline void check_error(int); static inline void check_error(int);
void init(); static inline void _setup();
void update();
void render();
int main(int argc, char const *argv[]){ int main(int argc, char const *argv[]){
if (argc < 2){ return -1;} if (argc < 2){ return -1;}
_setup();
/* Create the main window*/
window = window_create(init, NULL, NULL, update, render);
/* Set up the MPV player*/
player = player_create();
player_init(player);
/* Setting the renderer*/
renderer = renderer_create();
renderer_init(renderer);
/* Glyph shenanigans */
//mat4s transformation = glms_ortho(0.0f, (float)(window_width), 0.0f, (float)window_height, -100, 100);
// this doesn't work when called from inside the Renderer struct...
int flip_y = 1;
renderer->params_fbo = (mpv_render_param [3]){
{MPV_RENDER_PARAM_OPENGL_FBO, &(renderer->mpv_fbo)},
{MPV_RENDER_PARAM_FLIP_Y, &flip_y},
{MPV_RENDER_PARAM_INVALID, NULL}};
/* Start video playback */
player_loadfile(player, argv[1]); player_loadfile(player, argv[1]);
window_loop(); window_loop();
return 0; return 0;
} }
void _setup(){
window = window_create(init, NULL, NULL, update, render);
player = player_create();
player_init(player);
renderer = renderer_create();
renderer_init(renderer);
/* Glyph shenanigans */
//mat4s transformation = glms_ortho(0.0f, (float)(window_width), 0.0f, (float)window_height, -100, 100);
}
// TODO Remove these function from here
void processGLFWInput(GLFWwindow *window, mpv_handle *ctx) void processGLFWInput(GLFWwindow *window, mpv_handle *ctx)
{ {
glfwSetInputMode(window, GLFW_STICKY_KEYS, GLFW_FALSE); glfwSetInputMode(window, GLFW_STICKY_KEYS, GLFW_FALSE);

View File

@ -42,9 +42,8 @@ int window_width = 1920;
int window_height = 1080; int window_height = 1080;
struct Window *window; struct Window *window;
GLFWwindow *wwindow = NULL;
mpv_handle *mpv; int flip_y = 1;
mpv_render_context *mpv_ctx;
unsigned int screen_rbo; unsigned int screen_rbo;
unsigned int video_rbo; unsigned int video_rbo;
@ -78,6 +77,11 @@ float imgVertices[] = {
int wakeup = 0; int wakeup = 0;
//extern int wakeup; //extern int wakeup;
void init();
void update();
void render();
bool SetSocketBlockingEnabled(int fd, bool blocking); bool SetSocketBlockingEnabled(int fd, bool blocking);