diff options
author | Clément Foucault <foucault.clem@gmail.com> | 2018-01-17 01:40:15 +0300 |
---|---|---|
committer | Clément Foucault <foucault.clem@gmail.com> | 2018-01-17 01:40:15 +0300 |
commit | 265950083566b78175a18df858a27550489dd117 (patch) | |
tree | c8e1be17b3f31b0b6672294e47aba31546001a82 /source/blender/draw/intern/DRW_render.h | |
parent | 96138daa2bd4e82c7d326a5cfc2a6ba042a4a0dd (diff) |
DRW: Codestyle refactor: Use macro to create shader libs.
This clears up the code from many DynStr usage. Easier to read.
Diffstat (limited to 'source/blender/draw/intern/DRW_render.h')
-rw-r--r-- | source/blender/draw/intern/DRW_render.h | 14 |
1 files changed, 13 insertions, 1 deletions
diff --git a/source/blender/draw/intern/DRW_render.h b/source/blender/draw/intern/DRW_render.h index 826d3a22d68..eafa8543940 100644 --- a/source/blender/draw/intern/DRW_render.h +++ b/source/blender/draw/intern/DRW_render.h @@ -258,7 +258,19 @@ void DRW_transform_to_display(struct GPUTexture *tex); struct GPUShader *DRW_shader_create( const char *vert, const char *geom, const char *frag, const char *defines); struct GPUShader *DRW_shader_create_with_lib( - const char *vert, const char *geom, const char *frag, const char *lib, const char *defines); + const char *vert, const char *geom, const char *frag, const char *defines, ...); +/* This macro concatenates all strings into its first arg. + * Remmeber to free the resulting string after use. */ +#define DRW_shader_create_lib(r_lib, ...) do { \ + const char *array[] = {__VA_ARGS__}; \ + DynStr *ds_frag = BLI_dynstr_new(); \ + for (int i = 0; i < (sizeof(array) / sizeof(*array)); ++i) { \ + BLI_dynstr_append(ds_frag, array[i]); \ + } \ + r_lib = BLI_dynstr_get_cstring(ds_frag); \ + BLI_dynstr_free(ds_frag); \ +} while (0) + struct GPUShader *DRW_shader_create_2D(const char *frag, const char *defines); struct GPUShader *DRW_shader_create_3D(const char *frag, const char *defines); struct GPUShader *DRW_shader_create_fullscreen(const char *frag, const char *defines); |