X-Git-Url: http://git.mutantstargoat.com?a=blobdiff_plain;f=src%2Fopengl%2Ftexture-gl.cc;h=80db3ad137052de3b88d1d678a09bd7428643886;hb=f1c3197c3e035f4be0e10ff6a8d0cf0339824177;hp=a2072e3088adddae7197cc5e8259206ce4f95e0e;hpb=0da7a98f74d00bfa6cf0d47fd7cf0f687eeba5f6;p=demo diff --git a/src/opengl/texture-gl.cc b/src/opengl/texture-gl.cc index a2072e3..80db3ad 100644 --- a/src/opengl/texture-gl.cc +++ b/src/opengl/texture-gl.cc @@ -1,15 +1,13 @@ #include +#include #include "texture.h" #include "opengl/texture-gl.h" TextureGL::TextureGL() { - w = 0; - h = 0; - - pixels = 0; tex = 0; + target = GL_TEXTURE_2D; } TextureGL::~TextureGL() @@ -19,22 +17,58 @@ 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); + } + + 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