summaryrefslogtreecommitdiff
path: root/src/core/device.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/core/device.c')
-rw-r--r--src/core/device.c29
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;
+}