X-Git-Url: http://git.tdb.fi/?a=blobdiff_plain;ds=sidebyside;f=source%2Ftexturecube.cpp;h=cd18c10d6909a2c459c4b2409789069900a67b88;hb=HEAD;hp=bbe6a6b679fe259915e6710036ed75336634816e;hpb=6afbace895a7bbcf216ab8e48280ea0303ab5892;p=libs%2Fgl.git diff --git a/source/texturecube.cpp b/source/texturecube.cpp deleted file mode 100644 index bbe6a6b6..00000000 --- a/source/texturecube.cpp +++ /dev/null @@ -1,142 +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"); - - 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 Vector3(fv.x+s*sv.x, fv.y+t*tv.y, fv.z+s*sv.z+t*tv.z); -} - -} // namespace GL -} // namespace Msp