72 lines
1.9 KiB
C
72 lines
1.9 KiB
C
/*
|
|
* programs.h
|
|
*
|
|
* Created on: Nov 10, 2017
|
|
* Author: nullifiedcat
|
|
*/
|
|
|
|
#pragma once
|
|
|
|
#include "freetype-gl.h"
|
|
#include "vertex-buffer.h"
|
|
#include "fontapi.h"
|
|
|
|
struct draw_cmd;
|
|
|
|
#define PROGRAM_INIT(name) program_##name##_init
|
|
#define PROGRAM_LOAD(name) program_##name##_load
|
|
#define PROGRAM_RENDER(name) program_##name##_render
|
|
#define PROGRAM_UNLOAD(name) program_##name##_unload
|
|
#define PROGRAM_DESTROY(name) program_##name##_destroy
|
|
|
|
#define DECL_PROGRAM_INIT(name) void program_##name##_init()
|
|
#define DECL_PROGRAM_LOAD(name) void program_##name##_load()
|
|
#define DECL_PROGRAM_RENDER(name) void program_##name##_render()
|
|
#define DECL_PROGRAM_UNLOAD(name) void program_##name##_unload()
|
|
#define DECL_PROGRAM_DESTROY(name) void program_##name##_destroy()
|
|
|
|
#define DECL_PROGRAM(name) \
|
|
DECL_PROGRAM_INIT(name); \
|
|
DECL_PROGRAM_LOAD(name); \
|
|
DECL_PROGRAM_RENDER(name); \
|
|
DECL_PROGRAM_UNLOAD(name); \
|
|
DECL_PROGRAM_DESTROY(name)
|
|
|
|
enum
|
|
{
|
|
PROGRAM_TRIANGLES_PLAIN,
|
|
PROGRAM_TRIANGLES_TEXTURED,
|
|
PROGRAM_FREETYPE,
|
|
PROGRAM_COUNT
|
|
};
|
|
|
|
typedef void(*program_callback_empty_fn)();
|
|
|
|
struct program_t
|
|
{
|
|
vertex_buffer_t *vertex;
|
|
size_t vertex_size;
|
|
GLuint shader;
|
|
|
|
program_callback_empty_fn init;
|
|
program_callback_empty_fn load;
|
|
program_callback_empty_fn render;
|
|
program_callback_empty_fn unload;
|
|
program_callback_empty_fn destroy;
|
|
};
|
|
|
|
void
|
|
program_init_inplace(struct program_t *program, const char *vertex_format, const char *shader_frag, const char *shader_vert, program_callback_empty_fn init, program_callback_empty_fn load, program_callback_empty_fn render, program_callback_empty_fn unload, program_callback_empty_fn destroy);
|
|
|
|
void
|
|
program_init_everything();
|
|
|
|
struct program_t programs[PROGRAM_COUNT];
|
|
|
|
DECL_PROGRAM(triangles_plain);
|
|
DECL_PROGRAM(triangles_textured);
|
|
DECL_PROGRAM(freetype);
|
|
|
|
void
|
|
program_freetype_switch_font(xoverlay_font_handle_t font);
|