Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorClément Foucault <foucault.clem@gmail.com>2018-01-17 01:40:15 +0300
committerClément Foucault <foucault.clem@gmail.com>2018-01-17 01:40:15 +0300
commit265950083566b78175a18df858a27550489dd117 (patch)
treec8e1be17b3f31b0b6672294e47aba31546001a82 /source/blender/draw/intern/DRW_render.h
parent96138daa2bd4e82c7d326a5cfc2a6ba042a4a0dd (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.h14
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);