llcubemap.h

Go to the documentation of this file.
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 // Environment map hack!
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

Generated on Thu Jul 1 06:08:23 2010 for Second Life Viewer by  doxygen 1.4.7