Commit d6a197b5 authored by nadro's avatar nadro

Prepared OpenGL CacheHandler class for the new architecture of Irrlicht's...

Prepared OpenGL CacheHandler class for the new architecture of Irrlicht's shared OpenGL drivers code.

git-svn-id: svn://svn.code.sf.net/p/irrlicht/code/trunk@5165 dfc29bdd-3216-0410-991c-e03cc46cb475
parent 72dcc7cb
This diff is collapsed.
......@@ -19,7 +19,7 @@ namespace video
class COGLCoreFeature
{
public:
COGLCoreFeature() : ColorAttachment(0), MultipleRenderTarget(0)
COGLCoreFeature() : BlendOperation(false), ColorAttachment(0), MultipleRenderTarget(0), TextureUnit(1)
{
}
......@@ -27,8 +27,11 @@ public:
{
}
bool BlendOperation;
u8 ColorAttachment;
u8 MultipleRenderTarget;
u8 TextureUnit;
};
}
......
This diff is collapsed.
......@@ -2,49 +2,28 @@
// This file is part of the "Irrlicht Engine".
// For conditions of distribution and use, see copyright notice in Irrlicht.h
#ifndef __C_OPEN_GL_CACHE_HANDLER_H_INCLUDED__
#define __C_OPEN_GL_CACHE_HANDLER_H_INCLUDED__
#ifndef __C_OPENGL_CACHE_HANDLER_H_INCLUDED__
#define __C_OPENGL_CACHE_HANDLER_H_INCLUDED__
#include "IrrCompileConfig.h"
#ifdef _IRR_COMPILE_WITH_OPENGL_
#include "COpenGLExtensionHandler.h"
#include "SMaterial.h"
#include "COGLCoreCacheHandler.h"
namespace irr
{
namespace video
{
class COpenGLDriver;
class COpenGLTexture;
class COpenGLDriver;
class COpenGLCacheHandler
{
class STextureCache
class COpenGLCacheHandler : public COGLCoreCacheHandler<COpenGLDriver, COpenGLTexture>
{
public:
STextureCache();
STextureCache(COpenGLCacheHandler* cacheHandler, u32 textureCount);
~STextureCache();
const COpenGLTexture* operator[](int index) const;
bool set(u32 index, const ITexture* texture);
void remove(ITexture* texture);
void clear();
private:
COpenGLCacheHandler* CacheHandler;
const COpenGLTexture* Texture[MATERIAL_MAX_TEXTURES];
u32 TextureCount;
};
public:
COpenGLCacheHandler(COpenGLDriver* driver);
~COpenGLCacheHandler();
virtual ~COpenGLCacheHandler();
// Alpha calls.
......@@ -52,113 +31,37 @@ namespace video
void setAlphaTest(bool enable);
// Blending calls.
void setBlendEquation(GLenum mode);
void setBlendEquationIndexed(GLuint index, GLenum mode);
void setBlendFunc(GLenum source, GLenum destination);
void setBlendFuncSeparate(GLenum sourceRGB, GLenum destinationRGB, GLenum sourceAlpha, GLenum destinationAlpha);
void setBlendFuncIndexed(GLuint index, GLenum source, GLenum destination);
void setBlendFuncSeparateIndexed(GLuint index, GLenum sourceRGB, GLenum destinationRGB, GLenum sourceAlpha, GLenum destinationAlpha);
void setBlend(bool enable);
void setBlendIndexed(GLuint index, bool enable);
// Client state calls.
void setClientState(bool vertex, bool normal, bool color, bool texCoord0);
// Color Mask.
void setColorMask(bool red, bool green, bool blue, bool alpha);
void setColorMaskIndexed(GLuint index, bool red, bool green, bool blue, bool alpha);
// Cull face calls.
void setCullFaceFunc(GLenum mode);
void setCullFace(bool enable);
// Depth calls.
void setDepthFunc(GLenum mode);
void setDepthMask(bool enable);
void setDepthTest(bool enable);
// FBO calls.
void getFBO(GLuint& id) const;
void setFBO(GLuint id);
// Matrix calls.
void setMatrixMode(GLenum mode);
// Texture calls.
void setActiveTexture(GLenum texture);
void setClientActiveTexture(GLenum texture);
// Viewport calls.
void setViewport(GLint viewportX, GLint viewportY, GLsizei viewportWidth, GLsizei viewportHeight);
// Texture cache.
STextureCache TextureCache;
private:
COpenGLDriver* Driver;
GLuint FrameBufferCount;
protected:
GLenum AlphaMode;
GLclampf AlphaRef;
bool AlphaTest;
GLenum* BlendEquation;
GLenum* BlendSourceRGB;
GLenum* BlendDestinationRGB;
GLenum* BlendSourceAlpha;
GLenum* BlendDestinationAlpha;
bool* Blend;
bool (*ColorMask)[4];
GLenum CullFaceMode;
bool CullFace;
GLenum DepthFunc;
bool DepthMask;
bool DepthTest;
GLuint FrameBufferID;
GLenum MatrixMode;
GLenum ActiveTexture;
GLenum ClientActiveTexture;
bool ClientStateVertex;
bool ClientStateNormal;
bool ClientStateColor;
bool ClientStateTexCoord0;
GLint ViewportX;
GLint ViewportY;
GLsizei ViewportWidth;
GLsizei ViewportHeight;
};
} // end namespace video
......
This diff is collapsed.
......@@ -17,9 +17,7 @@ namespace video
{
COpenGLExtensionHandler::COpenGLExtensionHandler() :
StencilBuffer(false), MultiTextureExtension(false),
TextureCompressionExtension(false),
MaxSupportedTextures(1), MaxTextureUnits(1), MaxLights(1),
StencilBuffer(false), TextureCompressionExtension(false), MaxLights(1),
MaxAnisotropy(1), MaxUserClipPlanes(0), MaxAuxBuffers(0), MaxIndices(65535),
MaxTextureSize(1), MaxGeometryVerticesOut(0),
MaxTextureLODBias(0.f), Version(0), ShaderLanguageVersion(0),
......@@ -373,7 +371,6 @@ void COpenGLExtensionHandler::initExtensions(bool stencilBuffer)
delete [] str;
}
MultiTextureExtension = FeatureAvailable[IRR_ARB_multitexture];
TextureCompressionExtension = FeatureAvailable[IRR_ARB_texture_compression];
StencilBuffer=stencilBuffer;
......@@ -586,7 +583,7 @@ void COpenGLExtensionHandler::initExtensions(bool stencilBuffer)
#elif defined(GL_MAX_TEXTURE_UNITS_ARB)
glGetIntegerv(GL_MAX_TEXTURE_UNITS_ARB, &num);
#endif
MaxSupportedTextures=static_cast<u8>(num);
Feature.TextureUnit=static_cast<u8>(num);
}
#endif
#if defined(GL_ARB_vertex_shader) || defined(GL_VERSION_2_0)
......@@ -598,7 +595,7 @@ void COpenGLExtensionHandler::initExtensions(bool stencilBuffer)
#elif defined(GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS_ARB)
glGetIntegerv(GL_MAX_COMBINED_TEXTURE_IMAGE_UNITS_ARB, &num);
#endif
MaxSupportedTextures=core::max_(MaxSupportedTextures,static_cast<u8>(num));
Feature.TextureUnit =core::max_(Feature.TextureUnit,static_cast<u8>(num));
}
#endif
glGetIntegerv(GL_MAX_LIGHTS, &num);
......@@ -698,17 +695,12 @@ void COpenGLExtensionHandler::initExtensions(bool stencilBuffer)
#ifdef _IRR_OPENGL_USE_EXTPOINTER_
if (!pGlActiveTextureARB || !pGlClientActiveTextureARB)
{
MultiTextureExtension = false;
Feature.TextureUnit = 1;
os::Printer::log("Failed to load OpenGL's multitexture extension, proceeding without.", ELL_WARNING);
}
else
#endif
MaxTextureUnits = core::min_(MaxSupportedTextures, static_cast<u8>(MATERIAL_MAX_TEXTURES));
if (MaxTextureUnits < 2)
{
MultiTextureExtension = false;
os::Printer::log("Warning: OpenGL device only has one texture unit. Disabling multitexturing.", ELL_WARNING);
}
Feature.TextureUnit = core::min_(Feature.TextureUnit, static_cast<u8>(MATERIAL_MAX_TEXTURES));
#ifdef GL_ARB_occlusion_query
if (FeatureAvailable[IRR_ARB_occlusion_query])
......@@ -729,6 +721,9 @@ void COpenGLExtensionHandler::initExtensions(bool stencilBuffer)
#endif
OcclusionQuerySupport=false;
Feature.BlendOperation = (Version >= 140) || FeatureAvailable[IRR_EXT_blend_minmax] || FeatureAvailable[IRR_EXT_blend_subtract] ||
FeatureAvailable[IRR_EXT_blend_logic_op];
#ifdef _DEBUG
if (FeatureAvailable[IRR_NVX_gpu_memory_info])
{
......@@ -770,7 +765,7 @@ bool COpenGLExtensionHandler::queryFeature(E_VIDEO_DRIVER_FEATURE feature) const
case EVDF_HARDWARE_TL:
return true; // we cannot tell other things
case EVDF_MULTITEXTURE:
return MultiTextureExtension;
return Feature.TextureUnit > 1;
case EVDF_BILINEAR_FILTER:
return true;
case EVDF_MIP_MAP:
......@@ -821,8 +816,7 @@ bool COpenGLExtensionHandler::queryFeature(E_VIDEO_DRIVER_FEATURE feature) const
// both features supported with OpenGL 1.1
return Version>=110;
case EVDF_BLEND_OPERATIONS:
return (Version>=140) || FeatureAvailable[IRR_EXT_blend_minmax] ||
FeatureAvailable[IRR_EXT_blend_subtract] || FeatureAvailable[IRR_EXT_blend_logic_op];
return Feature.BlendOperation;
case EVDF_BLEND_SEPARATE:
return (Version>=140) || FeatureAvailable[IRR_EXT_blend_func_separate];
case EVDF_TEXTURE_MATRIX:
......
......@@ -77,6 +77,16 @@ typedef unsigned int GLhandleARB;
typedef char GLchar;
#endif
// Blending definitions.
#if !defined(GL_VERSION_1_4)
#if defined(GL_EXT_blend_subtract) || defined(GL_EXT_blend_minmax) || defined(GL_EXT_blend_logic_op)
#define GL_FUNC_ADD GL_FUNC_ADD_EXT
#else
#define GL_FUNC_ADD 0
#endif
#endif
// FBO definitions.
#if !defined(GL_VERSION_3_0) && !defined(GL_ARB_framebuffer_object)
......@@ -115,6 +125,20 @@ typedef char GLchar;
#define GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS 7
#endif
// Texture definitions.
#if !defined(GL_VERSION_1_3)
#ifdef GL_ARB_multitexture
#define GL_TEXTURE0 GL_TEXTURE0_ARB
#else
#define GL_TEXTURE0 0
#endif
#endif
// Irrlicht's OpenGL version.
#define IRR_OPENGL_VERSION 14
#include "COGLCoreFeature.h"
namespace irr
......@@ -1115,14 +1139,9 @@ class COpenGLExtensionHandler
// Some variables for properties
bool StencilBuffer;
bool MultiTextureExtension;
bool TextureCompressionExtension;
// Some non-boolean properties
//! Maxmimum texture layers supported by the fixed pipeline
u8 MaxSupportedTextures;
//! Maxmimum texture layers supported by the engine
u8 MaxTextureUnits;
//! Maximum hardware lights supported
u8 MaxLights;
//! Maximal Anisotropy
......@@ -1157,8 +1176,8 @@ class COpenGLExtensionHandler
// public access to the (loaded) extensions.
// general functions
void extGlActiveTexture(GLenum texture);
void extGlClientActiveTexture(GLenum texture);
void irrGlActiveTexture(GLenum texture);
void irrGlClientActiveTexture(GLenum texture);
void extGlPointParameterf(GLint loc, GLfloat f);
void extGlPointParameterfv(GLint loc, const GLfloat *v);
void extGlStencilFuncSeparate (GLenum frontfunc, GLenum backfunc, GLint ref, GLuint mask);
......@@ -1272,17 +1291,17 @@ class COpenGLExtensionHandler
void extGlGetQueryObjectuiv(GLuint id, GLenum pname, GLuint *params);
// blend
void extGlBlendFuncSeparate(GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha);
void extGlBlendEquation(GLenum mode);
void irrGlBlendFuncSeparate(GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha);
void irrGlBlendEquation(GLenum mode);
// indexed
void extGlEnableIndexed(GLenum target, GLuint index);
void extGlDisableIndexed(GLenum target, GLuint index);
void extGlColorMaskIndexed(GLuint buf, GLboolean r, GLboolean g, GLboolean b, GLboolean a);
void extGlBlendFuncIndexed(GLuint buf, GLenum src, GLenum dst);
void extGlBlendFuncSeparateIndexed(GLuint buf, GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha);
void extGlBlendEquationIndexed(GLuint buf, GLenum mode);
void extGlBlendEquationSeparateIndexed(GLuint buf, GLenum modeRGB, GLenum modeAlpha);
void irrGlEnableIndexed(GLenum target, GLuint index);
void irrGlDisableIndexed(GLenum target, GLuint index);
void irrGlColorMaskIndexed(GLuint buf, GLboolean r, GLboolean g, GLboolean b, GLboolean a);
void irrGlBlendFuncIndexed(GLuint buf, GLenum src, GLenum dst);
void irrGlBlendFuncSeparateIndexed(GLuint buf, GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha);
void irrGlBlendEquationIndexed(GLuint buf, GLenum mode);
void irrGlBlendEquationSeparateIndexed(GLuint buf, GLenum modeRGB, GLenum modeAlpha);
// generic vsync setting method for several extensions
void extGlSwapInterval(int interval);
......@@ -1444,13 +1463,12 @@ class COpenGLExtensionHandler
#endif
};
inline void COpenGLExtensionHandler::extGlActiveTexture(GLenum texture)
inline void COpenGLExtensionHandler::irrGlActiveTexture(GLenum texture)
{
#ifdef _IRR_OPENGL_USE_EXTPOINTER_
if (MultiTextureExtension && pGlActiveTextureARB)
if (pGlActiveTextureARB)
pGlActiveTextureARB(texture);
#else
if (MultiTextureExtension)
#ifdef GL_ARB_multitexture
glActiveTextureARB(texture);
#else
......@@ -1459,13 +1477,12 @@ inline void COpenGLExtensionHandler::extGlActiveTexture(GLenum texture)
#endif
}
inline void COpenGLExtensionHandler::extGlClientActiveTexture(GLenum texture)
inline void COpenGLExtensionHandler::irrGlClientActiveTexture(GLenum texture)
{
#ifdef _IRR_OPENGL_USE_EXTPOINTER_
if (MultiTextureExtension && pGlClientActiveTextureARB)
if (pGlClientActiveTextureARB)
pGlClientActiveTextureARB(texture);
#else
if (MultiTextureExtension)
glClientActiveTextureARB(texture);
#endif
}
......@@ -2657,7 +2674,7 @@ inline void COpenGLExtensionHandler::extGlGetQueryObjectuiv(GLuint id, GLenum pn
#endif
}
inline void COpenGLExtensionHandler::extGlBlendFuncSeparate(GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha)
inline void COpenGLExtensionHandler::irrGlBlendFuncSeparate(GLenum sfactorRGB, GLenum dfactorRGB, GLenum sfactorAlpha, GLenum dfactorAlpha)
{
#ifdef _IRR_OPENGL_USE_EXTPOINTER_
if (pGlBlendFuncSeparate)
......@@ -2673,7 +2690,7 @@ inline void COpenGLExtensionHandler::extGlBlendFuncSeparate(GLenum sfactorRGB, G
#endif
}
inline void COpenGLExtensionHandler::extGlBlendEquation(GLenum mode)
inline void COpenGLExtensionHandler::irrGlBlendEquation(GLenum mode)
{
#ifdef _IRR_OPENGL_USE_EXTPOINTER_
if (pGlBlendEquation)
......@@ -2689,7 +2706,7 @@ inline void COpenGLExtensionHandler::extGlBlendEquation(GLenum mode)
#endif
}
inline void COpenGLExtensionHandler::extGlEnableIndexed(GLenum target, GLuint index)
inline void COpenGLExtensionHandler::irrGlEnableIndexed(GLenum target, GLuint index)
{
#ifdef _IRR_OPENGL_USE_EXTPOINTER_
if (FeatureAvailable[IRR_EXT_draw_buffers2] && pGlEnableIndexedEXT)
......@@ -2701,7 +2718,7 @@ inline void COpenGLExtensionHandler::extGlEnableIndexed(GLenum target, GLuint in
#endif
}
inline void COpenGLExtensionHandler::extGlDisableIndexed(GLenum target, GLuint index)
inline void COpenGLExtensionHandler::irrGlDisableIndexed(GLenum target, GLuint index)
{
#ifdef _IRR_OPENGL_USE_EXTPOINTER_
if (FeatureAvailable[IRR_EXT_draw_buffers2] && pGlDisableIndexedEXT)
......@@ -2713,7 +2730,7 @@ inline void COpenGLExtensionHandler::extGlDisableIndexed(GLenum target, GLuint i
#endif
}
inline void COpenGLExtensionHandler::extGlColorMaskIndexed(GLuint buf, GLboolean r, GLboolean g, GLboolean b, GLboolean a)
inline void COpenGLExtensionHandler::irrGlColorMaskIndexed(GLuint buf, GLboolean r, GLboolean g, GLboolean b, GLboolean a)
{
#ifdef _IRR_OPENGL_USE_EXTPOINTER_
if (FeatureAvailable[IRR_EXT_draw_buffers2] && pGlColorMaskIndexedEXT)
......@@ -2725,7 +2742,7 @@ inline void COpenGLExtensionHandler::extGlColorMaskIndexed(GLuint buf, GLboolean
#endif
}
inline void COpenGLExtensionHandler::extGlBlendFuncIndexed(GLuint buf, GLenum src, GLenum dst)
inline void COpenGLExtensionHandler::irrGlBlendFuncIndexed(GLuint buf, GLenum src, GLenum dst)
{
#ifdef _IRR_OPENGL_USE_EXTPOINTER_
if (FeatureAvailable[IRR_ARB_draw_buffers_blend] && pGlBlendFunciARB)
......@@ -2741,7 +2758,7 @@ inline void COpenGLExtensionHandler::extGlBlendFuncIndexed(GLuint buf, GLenum sr
#endif
}
inline void COpenGLExtensionHandler::extGlBlendFuncSeparateIndexed(GLuint buf, GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha)
inline void COpenGLExtensionHandler::irrGlBlendFuncSeparateIndexed(GLuint buf, GLenum srcRGB, GLenum dstRGB, GLenum srcAlpha, GLenum dstAlpha)
{
#ifdef _IRR_OPENGL_USE_EXTPOINTER_
if (FeatureAvailable[IRR_ARB_draw_buffers_blend] && pGlBlendFuncSeparateiARB)
......@@ -2757,7 +2774,7 @@ inline void COpenGLExtensionHandler::extGlBlendFuncSeparateIndexed(GLuint buf, G
#endif
}
inline void COpenGLExtensionHandler::extGlBlendEquationIndexed(GLuint buf, GLenum mode)
inline void COpenGLExtensionHandler::irrGlBlendEquationIndexed(GLuint buf, GLenum mode)
{
#ifdef _IRR_OPENGL_USE_EXTPOINTER_
if (FeatureAvailable[IRR_ARB_draw_buffers_blend] && pGlBlendEquationiARB)
......@@ -2773,7 +2790,7 @@ inline void COpenGLExtensionHandler::extGlBlendEquationIndexed(GLuint buf, GLenu
#endif
}
inline void COpenGLExtensionHandler::extGlBlendEquationSeparateIndexed(GLuint buf, GLenum modeRGB, GLenum modeAlpha)
inline void COpenGLExtensionHandler::irrGlBlendEquationSeparateIndexed(GLuint buf, GLenum modeRGB, GLenum modeAlpha)
{
#ifdef _IRR_OPENGL_USE_EXTPOINTER_
if (FeatureAvailable[IRR_ARB_draw_buffers_blend] && pGlBlendEquationSeparateiARB)
......
......@@ -20,6 +20,7 @@
#include "IVideoDriver.h"
#include "os.h"
#include "COpenGLDriver.h"
#include "COpenGLTexture.h"
#include "COpenGLCacheHandler.h"
#include "COpenGLMaterialRenderer.h"
......
......@@ -11,6 +11,7 @@
#include "IVideoDriver.h"
#include "os.h"
#include "COpenGLDriver.h"
#include "COpenGLTexture.h"
#include "COpenGLCacheHandler.h"
#include "COpenGLMaterialRenderer.h"
......
......@@ -110,7 +110,7 @@ COpenGLTexture::COpenGLTexture(const io::path& name, const core::dimension2d<u32
#endif
COpenGLCacheHandler* cacheHandler = Driver->getCacheHandler();
const COpenGLTexture* prevTexture = cacheHandler->TextureCache[0];
const COpenGLTexture* prevTexture = cacheHandler->getTextureCache()[0];
DriverType = EDT_OPENGL;
......@@ -141,7 +141,7 @@ COpenGLTexture::COpenGLTexture(const io::path& name, const core::dimension2d<u32
glGenTextures(1, &TextureName);
cacheHandler->TextureCache.set(0, this);
cacheHandler->getTextureCache().set(0, this);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, FilteringType);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
......@@ -157,14 +157,14 @@ COpenGLTexture::COpenGLTexture(const io::path& name, const core::dimension2d<u32
glTexImage2D(GL_TEXTURE_2D, 0, InternalFormat, OriginalSize.Width, OriginalSize.Height, 0, PixelFormat, PixelType, 0);
cacheHandler->TextureCache.set(0, prevTexture);
cacheHandler->getTextureCache().set(0, prevTexture);
}
//! destructor
COpenGLTexture::~COpenGLTexture()
{
Driver->getCacheHandler()->TextureCache.remove(this);
Driver->getCacheHandler()->getTextureCache().remove(this);
if (TextureName)
glDeleteTextures(1, &TextureName);
......@@ -480,7 +480,7 @@ void COpenGLTexture::uploadTexture(bool newTexture, void* mipmapData, u32 level)
}
COpenGLCacheHandler* cacheHandler = Driver->getCacheHandler();
const COpenGLTexture* prevTexture = cacheHandler->TextureCache[0];
const COpenGLTexture* prevTexture = cacheHandler->getTextureCache()[0];
// get correct opengl color data values
GLenum oldInternalFormat = InternalFormat;
......@@ -490,7 +490,7 @@ void COpenGLTexture::uploadTexture(bool newTexture, void* mipmapData, u32 level)
if (!newTexture)
InternalFormat=oldInternalFormat;
cacheHandler->TextureCache.set(0, this);
cacheHandler->getTextureCache().set(0, this);
if (Driver->testGLError())
os::Printer::log("Could not bind Texture", ELL_ERROR);
......@@ -604,7 +604,7 @@ void COpenGLTexture::uploadTexture(bool newTexture, void* mipmapData, u32 level)
if (Driver->testGLError())
os::Printer::log("Could not glTexImage2D", ELL_ERROR);
cacheHandler->TextureCache.set(0, prevTexture);
cacheHandler->getTextureCache().set(0, prevTexture);
}
......@@ -615,9 +615,9 @@ void* COpenGLTexture::lock(E_TEXTURE_LOCK_MODE mode, u32 mipmapLevel)
return 0;
COpenGLCacheHandler* cacheHandler = Driver->getCacheHandler();
const COpenGLTexture* prevTexture = cacheHandler->TextureCache[0];
const COpenGLTexture* prevTexture = cacheHandler->getTextureCache()[0];
cacheHandler->TextureCache.set(0, this);
cacheHandler->getTextureCache().set(0, this);
// store info about which image is locked
IImage* image = (mipmapLevel==0)?Image:MipImage;
......@@ -663,7 +663,7 @@ void* COpenGLTexture::lock(E_TEXTURE_LOCK_MODE mode, u32 mipmapLevel)
}
if (!image)
{
cacheHandler->TextureCache.set(0, prevTexture);
cacheHandler->getTextureCache().set(0, prevTexture);
return 0;
}
......@@ -673,7 +673,7 @@ void* COpenGLTexture::lock(E_TEXTURE_LOCK_MODE mode, u32 mipmapLevel)
u8* pixels = static_cast<u8*>(image->lock());
if (!pixels)
{
cacheHandler->TextureCache.set(0, prevTexture);
cacheHandler->getTextureCache().set(0, prevTexture);
return 0;
}
......@@ -718,7 +718,7 @@ void* COpenGLTexture::lock(E_TEXTURE_LOCK_MODE mode, u32 mipmapLevel)
}
}
cacheHandler->TextureCache.set(0, prevTexture);
cacheHandler->getTextureCache().set(0, prevTexture);
return image->lock();
}
......@@ -791,16 +791,16 @@ void COpenGLTexture::regenerateMipMapLevels(void* mipmapData)
}
COpenGLCacheHandler* cacheHandler = Driver->getCacheHandler();
const COpenGLTexture* prevTexture = cacheHandler->TextureCache[0];
const COpenGLTexture* prevTexture = cacheHandler->getTextureCache()[0];
cacheHandler->TextureCache.set(0, this);
cacheHandler->getTextureCache().set(0, this);
// hardware moethods for generate mipmaps.
if (!mipmapData && AutomaticMipmapUpdate && !MipmapLegacyMode)
{
Driver->irrGlGenerateMipmap(GL_TEXTURE_2D);
cacheHandler->TextureCache.set(0, prevTexture);
cacheHandler->getTextureCache().set(0, prevTexture);
return;
}
......@@ -857,7 +857,7 @@ void COpenGLTexture::regenerateMipMapLevels(void* mipmapData)
if (!mipmapData)
delete [] target;
cacheHandler->TextureCache.set(0, prevTexture);
cacheHandler->getTextureCache().set(0, prevTexture);
}
COpenGLTexture::SStatesCache& COpenGLTexture::getStatesCache() const
......
......@@ -1008,6 +1008,7 @@
<ClInclude Include="CGeometryCreator.h" />
<ClInclude Include="CMeshCache.h" />
<ClInclude Include="CMeshManipulator.h" />
<ClInclude Include="COGLCoreCacheHandler.h" />
<ClInclude Include="COGLCoreFeature.h" />
<ClInclude Include="COGLCoreRenderTarget.h" />
<ClInclude Include="COpenGLCacheHandler.h" />
......
......@@ -1312,6 +1312,9 @@
<ClInclude Include="COpenGLTexture.h">
<Filter>Irrlicht\video\OpenGL</Filter>
</ClInclude>
<ClInclude Include="COGLCoreCacheHandler.h">
<Filter>Irrlicht\video\OpenGL Core</Filter>
</ClInclude>
<ClInclude Include="COGLCoreFeature.h">
<Filter>Irrlicht\video\OpenGL Core</Filter>
</ClInclude>
......
......@@ -1008,6 +1008,7 @@
<ClInclude Include="CGeometryCreator.h" />
<ClInclude Include="CMeshCache.h" />
<ClInclude Include="CMeshManipulator.h" />
<ClInclude Include="COGLCoreCacheHandler.h" />
<ClInclude Include="COGLCoreFeature.h" />
<ClInclude Include="COGLCoreRenderTarget.h" />
<ClInclude Include="COpenGLCacheHandler.h" />
......
......@@ -1312,6 +1312,9 @@
<ClInclude Include="COpenGLTexture.h">
<Filter>Irrlicht\video\OpenGL</Filter>
</ClInclude>
<ClInclude Include="COGLCoreCacheHandler.h">
<Filter>Irrlicht\video\OpenGL Core</Filter>
</ClInclude>
<ClInclude Include="COGLCoreFeature.h">
<Filter>Irrlicht\video\OpenGL Core</Filter>
</ClInclude>
......
......@@ -1008,6 +1008,7 @@
<ClInclude Include="CGeometryCreator.h" />
<ClInclude Include="CMeshCache.h" />
<ClInclude Include="CMeshManipulator.h" />
<ClInclude Include="COGLCoreCacheHandler.h" />
<ClInclude Include="COGLCoreFeature.h" />
<ClInclude Include="COGLCoreRenderTarget.h" />
<ClInclude Include="COpenGLCacheHandler.h" />
......
......@@ -1312,6 +1312,9 @@
<ClInclude Include="COpenGLTexture.h">
<Filter>Irrlicht\video\OpenGL</Filter>
</ClInclude>
<ClInclude Include="COGLCoreCacheHandler.h">
<Filter>Irrlicht\video\OpenGL Core</Filter>
</ClInclude>
<ClInclude Include="COGLCoreFeature.h">
<Filter>Irrlicht\video\OpenGL Core</Filter>
</ClInclude>
......
......@@ -1018,6 +1018,7 @@
<ClInclude Include="CGeometryCreator.h" />
<ClInclude Include="CMeshCache.h" />
<ClInclude Include="CMeshManipulator.h" />
<ClInclude Include="COGLCoreCacheHandler.h" />
<ClInclude Include="COGLCoreFeature.h" />
<ClInclude Include="COGLCoreRenderTarget.h" />
<ClInclude Include="COpenGLCacheHandler.h" />
......
......@@ -1312,6 +1312,9 @@
<ClInclude Include="COpenGLTexture.h">
<Filter>Irrlicht\video\OpenGL</Filter>
</ClInclude>
<ClInclude Include="COGLCoreCacheHandler.h">
<Filter>Irrlicht\video\OpenGL Core</Filter>
</ClInclude>
<ClInclude Include="COGLCoreFeature.h">
<Filter>Irrlicht\video\OpenGL Core</Filter>
</ClInclude>
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment