diff options
Diffstat (limited to 'src/core/device.c')
-rw-r--r-- | src/core/device.c | 29 |
1 files changed, 29 insertions, 0 deletions
diff --git a/src/core/device.c b/src/core/device.c index 9e4a6eb..cf9fee2 100644 --- a/src/core/device.c +++ b/src/core/device.c @@ -43,6 +43,10 @@ struct { Program* program; UniformCollection uniforms; + /*texture relavent*/ + FilterMode filtermode; + WrapMode wrapmode; + uint enable; } state; @@ -73,6 +77,9 @@ void ssr_init(ssr_Config* conf) { state.buffersize = sizeof(Color) * config.width * config.height; state.zbuffer = ssrM_newvector(uint, config.width * config.height); memset(state.zbuffer, 0xff, sizeof(uint)*config.width*config.height); + + state.filtermode = FILTERMODE_POINT; + state.wrapmode = WRAPMODE_CLAMP; } float ssr_getaspect() { @@ -87,6 +94,22 @@ int ssr_getframebufferh() { return config.height; } +void ssr_setfiltermode(FilterMode filter_mode) { + state.filtermode = filter_mode; +} + +void ssr_setwrapmode(WrapMode wrap_mode) { + state.wrapmode = wrap_mode; +} + +FilterMode ssr_getfiltermode() { + return state.filtermode; +} + +WrapMode ssr_getwrapmode() { + return state.wrapmode; +} + void ssr_matrixmode(ssr_MatrixMode mode) { state.matrixmode = mode; } @@ -410,3 +433,9 @@ void ssr_setuniformvec2(uint idx, Vec2* src) { if (idx < 0 || idx > 7) return; state.uniforms.var_vec2[idx] = *src; } + +void ssr_setuniformtex(uint idx, Texture* tex) { + ssr_assert(tex); + if (idx < 0 || idx > 11) return; + state.uniforms.var_tex[idx] = tex; +} |