aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTomasz Kramkowski <tk@the-tk.com>2018-03-27 19:07:48 +0100
committerTomasz Kramkowski <tk@the-tk.com>2018-03-27 19:22:11 +0100
commit199b04b8e9325c5aff67ed8892d33b473b9d58ed (patch)
tree3279847bb59448c6c36d1d814444170a9389d28f
parent6b65556ef11e9acf79bbecdac8d205a973d5dc9b (diff)
downloadfaqe-199b04b8e9325c5aff67ed8892d33b473b9d58ed.tar.gz
faqe-199b04b8e9325c5aff67ed8892d33b473b9d58ed.tar.xz
faqe-199b04b8e9325c5aff67ed8892d33b473b9d58ed.zip
loadgl: gl_uni_*
Add gl_uni_loc and gl_uni_set* functions to loadgl.
-rw-r--r--loadgl.m436
1 files changed, 36 insertions, 0 deletions
diff --git a/loadgl.m4 b/loadgl.m4
index fb9b5e4..7a7bde4 100644
--- a/loadgl.m4
+++ b/loadgl.m4
@@ -19,6 +19,24 @@ define(`FUNCS', `undivert(2)')
# 3 - LGL_LOAD(name);
define(`LOADS', `undivert(3)')
+define(`FOR', `ifelse($#, 0, ``$0'', `ifelse(eval($2 <= $3), 1,
+ `pushdef(`$1', $2)$4`'popdef(`$1')$0(`$1', incr($2), $3, `$4')')')')
+
+# PAT(pattern, subst)
+define(`PAT', `pushdef(`P', $2)$1`'popdef(`P')')
+# PARAMS(start, n, pattern)
+define(`PARAMS', `ifelse(eval(`$1 < ($2 - 1)'), 1,
+ `PAT(`$3', $1), $0(incr($1), $2, `$3')', `PAT(`$3', $1)')')
+define(`TYPE', `PARAMS(0, $1, `$2 v`'P')')
+# $1 $2 $3 $4 $5 $6 $7
+# FLOAT(vec, suf, vectype, glname, rtype, name, args...)
+define(`LOADV', `LOAD($4$1$2, $5, $6$1$2, shift(shift(shift(shift(shift(shift($@)))))), TYPE($1, $3))')
+define(`LOADP', `LOAD($4$1$2, $5, $6$1$2, shift(shift(shift(shift(shift(shift($@)))))), $3 *value)')
+define(`MULTI', `FOR(`n', 1, $1, `$2')')
+define(`FOREACH', `ifelse(eval($# > 2), 1,
+ `pushdef(`$1', `$3')$2`'popdef(`$1')dnl
+`'ifelse(eval($# > 3), 1, `$0(`$1', `$2', shift(shift(shift($@))))')')')
+
# Functions
LOAD(glGetError, GLenum, gl_error, void)
@@ -51,5 +69,23 @@ LOAD(glBindVertexArray, void, gl_va_bind, GLuint va)
LOAD(glDrawArrays, void, gl_draw_arrays, GLenum mode, GLint first, GLsizei count)
LOAD(glDrawElements, void, gl_draw_elems, GLenum mode, GLsizei count, GLenum type, const void *indices)
LOAD(glPolygonMode, void, gl_poly_mode, GLenum face, GLenum mode)
+LOAD(glGetUniformLocation, GLint, gl_uni_loc, GLuint program, const char *name);
+LOAD(glGetUniformfv, void, gl_uni_getf, GLuint program, GLint location, GLfloat *params);
+LOAD(glGetUniformiv, void, gl_uni_geti, GLuint program, GLint location, GLint *params);
+FOREACH(`type', `FOR(`n', 1, 4, `LOADV(n, type, glUniform, void, gl_uni_set, GLint location)')',
+ `f, GLfloat', `i, GLint', `ui, GLuint')
+FOREACH(`type', `FOR(`n', 1, 4, `LOADP(n, type, glUniform, void, gl_uni_set, GLint location, GLsizei count)')',
+ `fv, const GLfloat', `iv, const GLint', `uiv, const GLuint')
+FOR(`n', 2, 4, `LOAD(glUniformMatrix`'n`'fv, void, gl_uni_setm`'n`'fv, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value)')
+LOAD(glUniformMatrix2x3fv, void, gl_uni_setm2x3fv, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value)
+LOAD(glUniformMatrix2x4fv, void, gl_uni_setm2x4fv, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value)
+LOAD(glUniformMatrix3x2fv, void, gl_uni_setm3x2fv, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value)
+LOAD(glUniformMatrix3x4fv, void, gl_uni_setm3x4fv, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value)
+LOAD(glUniformMatrix4x2fv, void, gl_uni_setm4x2fv, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value)
+LOAD(glUniformMatrix4x3fv, void, gl_uni_setm4x3fv, GLint location, GLsizei count, GLboolean transpose, const GLfloat *value)
+
+# Undefine
+
+undefine(`LOAD')
divert(0)dnl