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
build/*
assets/*
bin/*
.cache/*
build/**
assets/**
bin/**
.cache/**
# Prerequisites
*.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" }
});
// Define buffers
_renderer_mpv(self);
_renderer_glyph(self);
// Create bitmaps
self->atlas = makeBitmaps();
}
@ -57,6 +55,7 @@ void renderer_destroy(struct Renderer *self) {
vao_destroy(self->screenVAO);
vbo_destroy(self->screenVBO);
free(self->params_fbo);
free(self);
}
@ -102,9 +101,17 @@ void _renderer_mpv(struct Renderer *self) {
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
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);
}
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
};
extern int flip_y;
struct Renderer{
struct Shader shaders[SHADERS_LAST + 1];

View File

@ -3,42 +3,32 @@
#include "gfx/vbo.h"
#include "glad/glad.h"
static inline void check_error(int);
void init();
void update();
void render();
static inline void check_error(int);
static inline void _setup();
int main(int argc, char const *argv[]){
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]);
window_loop();
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)
{
glfwSetInputMode(window, GLFW_STICKY_KEYS, GLFW_FALSE);

View File

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