mirror of
https://github.com/mpv-player/mpv
synced 2024-12-11 09:25:56 +00:00
e74a4d5bc0
The basic idea is to use dynamically generated shaders instead of a single monolithic file + a ton of ifdefs. Instead of having to setup every aspect of it separately (like compiling shaders, setting uniforms, perfoming the actual rendering steps, the GLSL parts), we generate the GLSL on the fly, and perform the rendering at the same time. The GLSL is regenerated every frame, but the actual compiled OpenGL-level shaders are cached, which makes it fast again. Almost all logic can be in a single place. The new code is significantly more flexible, which allows us to improve the code clarity, performance and add more features easily. This commit is incomplete. It drops almost all previous code, and readds only the most important things (some of them actually buggy). The next commit will complete it - it's separate to preserve authorship information.
22 lines
672 B
C
22 lines
672 B
C
#ifndef MPLAYER_GL_OSD_H
|
|
#define MPLAYER_GL_OSD_H
|
|
|
|
#include <stdbool.h>
|
|
#include <inttypes.h>
|
|
|
|
#include "gl_utils.h"
|
|
#include "sub/osd.h"
|
|
|
|
struct mpgl_osd *mpgl_osd_init(GL *gl, struct mp_log *log, struct osd_state *osd);
|
|
void mpgl_osd_destroy(struct mpgl_osd *ctx);
|
|
|
|
void mpgl_osd_set_options(struct mpgl_osd *ctx, bool pbo);
|
|
|
|
void mpgl_osd_generate(struct mpgl_osd *ctx, struct mp_osd_res res, double pts,
|
|
int stereo_mode);
|
|
enum sub_bitmap_format mpgl_osd_get_part_format(struct mpgl_osd *ctx, int index);
|
|
struct gl_vao *mpgl_osd_get_vao(struct mpgl_osd *ctx);
|
|
void mpgl_osd_draw_part(struct mpgl_osd *ctx, int vp_w, int vp_h, int index);
|
|
|
|
#endif
|