X-Git-Url: http://git.tdb.fi/?p=libs%2Fgl.git;a=blobdiff_plain;f=source%2Ftexturecube.cpp;h=cd18c10d6909a2c459c4b2409789069900a67b88;hp=ef9d25297a4285c5ec630cd65e3237c6cddbf471;hb=HEAD;hpb=2b779717e42b514210f7128cf9aee2276650e003 diff --git a/source/texturecube.cpp b/source/texturecube.cpp deleted file mode 100644 index ef9d2529..00000000 --- a/source/texturecube.cpp +++ /dev/null @@ -1,143 +0,0 @@ -#include "arb_texture_cube_map.h" -#include "bindable.h" -#include "error.h" -#include "texturecube.h" - -using namespace std; - -namespace Msp { -namespace GL { - -Vector3 TextureCube::directions[6] = -{ - Vector3(1, 0, 0), - Vector3(-1, 0, 0), - Vector3(0, 1, 0), - Vector3(0, -1, 0), - Vector3(0, 0, 1), - Vector3(0, 0, -1) -}; - -TextureCube::TextureCube(): - Texture(GL_TEXTURE_CUBE_MAP), - size(0), - allocated(0) -{ - static Require _req(ARB_texture_cube_map); -} - -void TextureCube::storage(PixelFormat fmt, unsigned sz) -{ - if(size>0) - throw invalid_operation("TextureCube::storage"); - if(sz==0) - throw invalid_argument("TextureCube::storage"); - require_pixelformat(fmt); - - ifmt = fmt; - size = sz; -} - -void TextureCube::allocate(unsigned level) -{ - if(allocated&(1<>=1, ++level) ; - allocated |= (1<>level; -} - -TextureCubeFace TextureCube::enumerate_faces(unsigned i) -{ - switch(i) - { - case 0: return POSITIVE_X; - case 1: return NEGATIVE_X; - case 2: return POSITIVE_Y; - case 3: return NEGATIVE_Y; - case 4: return POSITIVE_Z; - case 5: return NEGATIVE_Z; - default: throw out_of_range("TextureCube::enumerate_faces"); - } -} - -const Vector3 &TextureCube::get_face_direction(TextureCubeFace face) -{ - switch(face) - { - case POSITIVE_X: return directions[0]; - case NEGATIVE_X: return directions[1]; - case POSITIVE_Y: return directions[2]; - case NEGATIVE_Y: return directions[3]; - case POSITIVE_Z: return directions[4]; - case NEGATIVE_Z: return directions[5]; - default: throw invalid_argument("TextureCube::get_face_direction"); - } -} - -const Vector3 &TextureCube::get_s_direction(TextureCubeFace face) -{ - switch(face) - { - case POSITIVE_X: return directions[5]; - case NEGATIVE_X: return directions[4]; - case POSITIVE_Y: return directions[0]; - case NEGATIVE_Y: return directions[0]; - case POSITIVE_Z: return directions[0]; - case NEGATIVE_Z: return directions[1]; - default: throw invalid_argument("TextureCube::get_s_direction"); - } -} - -const Vector3 &TextureCube::get_t_direction(TextureCubeFace face) -{ - switch(face) - { - case POSITIVE_X: return directions[3]; - case NEGATIVE_X: return directions[3]; - case POSITIVE_Y: return directions[4]; - case NEGATIVE_Y: return directions[5]; - case POSITIVE_Z: return directions[3]; - case NEGATIVE_Z: return directions[3]; - default: throw invalid_argument("TextureCube::get_t_direction"); - } -} - -Vector3 TextureCube::get_texel_direction(TextureCubeFace face, unsigned u, unsigned v) -{ - float s = (u+0.5f)*2.0f/size-1.0f; - float t = (v+0.5f)*2.0f/size-1.0f; - const Vector3 &fv = get_face_direction(face); - const Vector3 &sv = get_s_direction(face); - const Vector3 &tv = get_t_direction(face); - return fv+s*sv+t*tv; -} - -} // namespace GL -} // namespace Msp