00001
00032 #ifndef LL_LLCUBEMAP_H
00033 #define LL_LLCUBEMAP_H
00034
00035 #include "llgl.h"
00036 #include "llviewerimage.h"
00037
00038 #include <vector>
00039
00040 class LLVector3;
00041
00042
00043 class LLCubeMap : public LLRefCount
00044 {
00045 public:
00046 LLCubeMap();
00047 void init(const std::vector<LLPointer<LLImageRaw> >& rawimages);
00048 void initGL();
00049 void initRawData(const std::vector<LLPointer<LLImageRaw> >& rawimages);
00050 void initGLData();
00051
00052 void bind();
00053 void enable(S32 stage);
00054 void disable();
00055 void setMatrix(S32 stage);
00056 void restoreMatrix();
00057
00058 void finishPaint();
00059
00060 GLuint getGLName();
00061
00062 LLVector3 map(U8 side, U16 v_val, U16 h_val) const;
00063 BOOL project(F32& v_val, F32& h_val, BOOL& outside,
00064 U8 side, const LLVector3& dir) const;
00065 BOOL project(F32& v_min, F32& v_max, F32& h_min, F32& h_max,
00066 U8 side, LLVector3 dir[4]) const;
00067 void paintIn(LLVector3 dir[4], const LLColor4U& col);
00068 void destroyGL();
00069
00070 protected:
00071 ~LLCubeMap();
00072 LLGLenum mTargets[6];
00073 LLPointer<LLImageGL> mImages[6];
00074 LLPointer<LLImageRaw> mRawImages[6];
00075 S32 mTextureStage;
00076 S32 mMatrixStage;
00077 };
00078
00079 #endif