]> git.sesse.net Git - nageru/blobdiff - shared/ref_counted_texture.cpp
Change Futatabi frames to be cached as textures instead of in system memory.
[nageru] / shared / ref_counted_texture.cpp
diff --git a/shared/ref_counted_texture.cpp b/shared/ref_counted_texture.cpp
new file mode 100644 (file)
index 0000000..d10b0dc
--- /dev/null
@@ -0,0 +1,25 @@
+#include "ref_counted_texture.h"
+
+#include <epoxy/gl.h>
+#include <movit/util.h>
+
+RefCountedTexture create_texture_2d(GLuint width, GLuint height, GLenum internal_format, GLenum format, GLenum type, const GLvoid *pixels)
+{
+       GLuint tex;
+       glCreateTextures(GL_TEXTURE_2D, 1, &tex);
+       check_error();
+       glTextureStorage2D(tex, 1, internal_format, width, height);
+       check_error();
+       glTextureSubImage2D(tex, 0, 0, 0, width, height, format, type, pixels);
+       check_error();
+       glTextureParameteri(tex, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
+       check_error();
+       glTextureParameteri(tex, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
+       check_error();
+       glTextureParameteri(tex, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
+       check_error();
+       glTextureParameteri(tex, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
+       check_error();
+
+       return RefCountedTexture(new GLuint(tex), TextureDeleter());
+}