X-Git-Url: https://eleni.mutantstargoat.com/git/?a=blobdiff_plain;f=src%2Fopengl%2Ftexture-gl.cc;h=157d0bb771e5dd51298cb17876193fef4fa4348f;hb=243eb502c5dc70e586a9e81815234069bf623480;hp=607d0147f73ba39255c9a4542a53643155a16b2a;hpb=77e44c5424bd5e6e7c6a706151fa786a56270e12;p=demo diff --git a/src/opengl/texture-gl.cc b/src/opengl/texture-gl.cc index 607d014..157d0bb 100644 --- a/src/opengl/texture-gl.cc +++ b/src/opengl/texture-gl.cc @@ -1,4 +1,5 @@ #include +#include #include "texture.h" #include "opengl/texture-gl.h" @@ -40,9 +41,16 @@ void TextureGL::update() int w = images[i].w; int h = images[i].h; - unsigned char *pixels = images[i].pixels; + /* target */ unsigned int t = is_cubemap() ? faces[i] : GL_TEXTURE_2D; - glTexImage2D(t, 0, GL_SRGB_ALPHA, w, h, 0, GL_RGBA, GL_UNSIGNED_BYTE, pixels); + + /* internal format */ + unsigned int ifmt = images[i].is_float ? GL_RGBA16F : GL_SRGB_ALPHA; + + /* data type of pixel data */ + unsigned int type = images[i].is_float ? GL_FLOAT : GL_UNSIGNED_BYTE; + + glTexImage2D(t, 0, ifmt, w, h, 0, GL_RGBA, type, images[i].pixels); } glGenerateMipmap(target); @@ -50,5 +58,12 @@ void TextureGL::update() void TextureGL::bind() { - glBindTexture(GL_TEXTURE_2D, tex); + unsigned int target = is_cubemap() ? GL_TEXTURE_CUBE_MAP : GL_TEXTURE_2D; + glBindTexture(target, tex); +} + +void TextureGL::unbind() +{ + unsigned int target = is_cubemap() ? GL_TEXTURE_CUBE_MAP : GL_TEXTURE_2D; + glBindTexture(target, 0); } \ No newline at end of file