diff options
Diffstat (limited to 'indra/llrender')
| -rw-r--r-- | indra/llrender/llcubemaparray.cpp | 22 | ||||
| -rw-r--r-- | indra/llrender/llcubemaparray.h | 3 | 
2 files changed, 16 insertions, 9 deletions
| diff --git a/indra/llrender/llcubemaparray.cpp b/indra/llrender/llcubemaparray.cpp index 08ff7c9414..bb4bd58121 100644 --- a/indra/llrender/llcubemaparray.cpp +++ b/indra/llrender/llcubemaparray.cpp @@ -107,18 +107,18 @@ LLCubeMapArray::~LLCubeMapArray()  {  } -void LLCubeMapArray::allocate(U32 resolution, U32 components, U32 count) +void LLCubeMapArray::allocate(U32 resolution, U32 components, U32 count, BOOL use_mips)  {      U32 texname = 0;      LLImageGL::generateTextures(1, &texname); -    mImage = new LLImageGL(resolution, resolution, components, TRUE); +    mImage = new LLImageGL(resolution, resolution, components, use_mips);      mImage->setTexName(texname);      mImage->setTarget(sTargets[0], LLTexUnit::TT_CUBE_MAP_ARRAY); -    mImage->setUseMipMaps(TRUE); -    mImage->setHasMipMaps(TRUE); +    mImage->setUseMipMaps(use_mips); +    mImage->setHasMipMaps(use_mips);      bind(0); @@ -127,9 +127,15 @@ void LLCubeMapArray::allocate(U32 resolution, U32 components, U32 count)      mImage->setAddressMode(LLTexUnit::TAM_CLAMP); -    mImage->setFilteringOption(LLTexUnit::TFO_ANISOTROPIC); - -    glGenerateMipmap(GL_TEXTURE_CUBE_MAP_ARRAY); +    if (use_mips) +    { +        mImage->setFilteringOption(LLTexUnit::TFO_ANISOTROPIC); +        glGenerateMipmap(GL_TEXTURE_CUBE_MAP_ARRAY); +    } +    else +    { +        mImage->setFilteringOption(LLTexUnit::TFO_BILINEAR); +    }      unbind();  } @@ -137,7 +143,7 @@ void LLCubeMapArray::allocate(U32 resolution, U32 components, U32 count)  void LLCubeMapArray::bind(S32 stage)  {      mTextureStage = stage; -    gGL.getTexUnit(stage)->bindManual(LLTexUnit::TT_CUBE_MAP_ARRAY, getGLName(), TRUE); +    gGL.getTexUnit(stage)->bindManual(LLTexUnit::TT_CUBE_MAP_ARRAY, getGLName(), mImage->getUseMipMaps());  }  void LLCubeMapArray::unbind() diff --git a/indra/llrender/llcubemaparray.h b/indra/llrender/llcubemaparray.h index cbc0692afb..19c86278a1 100644 --- a/indra/llrender/llcubemaparray.h +++ b/indra/llrender/llcubemaparray.h @@ -51,7 +51,8 @@ public:      // res - resolution of each cube face      // components - number of components per pixel      // count - number of cube maps in the array -    void allocate(U32 res, U32 components, U32 count); +    // use_mips - if TRUE, mipmaps will be allocated for this cube map array and anisotropic filtering will be used +    void allocate(U32 res, U32 components, U32 count, BOOL use_mips = TRUE);  	void bind(S32 stage);      void unbind(); | 
