X-Git-Url: http://git.mutantstargoat.com?p=demo;a=blobdiff_plain;f=src%2Fopengl%2Ftexture-gl.cc;h=607d0147f73ba39255c9a4542a53643155a16b2a;hp=17ea926b571b20310e9dfd93b47d8488623d0fa1;hb=77e44c5424bd5e6e7c6a706151fa786a56270e12;hpb=697231b0832d626b328fc9ae4a5a5ef9a003aa1a diff --git a/src/opengl/texture-gl.cc b/src/opengl/texture-gl.cc index 17ea926..607d014 100644 --- a/src/opengl/texture-gl.cc +++ b/src/opengl/texture-gl.cc @@ -5,11 +5,8 @@ TextureGL::TextureGL() { - w = 0; - h = 0; - - pixels = 0; tex = 0; + target = GL_TEXTURE_2D; } TextureGL::~TextureGL() @@ -19,20 +16,37 @@ TextureGL::~TextureGL() void TextureGL::update() { + if(images.empty()) + return; + if(!tex) { + target = is_cubemap() ? GL_TEXTURE_CUBE_MAP : GL_TEXTURE_2D; + glGenTextures(1, &tex); - glBindTexture(GL_TEXTURE_2D, tex); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_LINEAR); - glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR); + glBindTexture(target, tex); + glTexParameteri(target, GL_TEXTURE_MIN_FILTER, GL_LINEAR_MIPMAP_LINEAR); + glTexParameteri(target, GL_TEXTURE_MAG_FILTER, GL_LINEAR); } else { - glBindTexture(GL_TEXTURE_2D, tex); + glBindTexture(target, tex); } - glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, w, h, 0, GL_RGBA, GL_UNSIGNED_BYTE, pixels); - glGenerateMipmap(GL_TEXTURE_2D); -} + static const unsigned int faces[] = { + GL_TEXTURE_CUBE_MAP_POSITIVE_X, GL_TEXTURE_CUBE_MAP_POSITIVE_Y, GL_TEXTURE_CUBE_MAP_POSITIVE_Z, + GL_TEXTURE_CUBE_MAP_NEGATIVE_X, GL_TEXTURE_CUBE_MAP_NEGATIVE_Y, GL_TEXTURE_CUBE_MAP_NEGATIVE_Z + }; + for(size_t i=0; i