Encapsulate D3D textures into Storage classes.

TRAC #18730 Signed-off-by: Daniel Koch Author: Nicolas Capens git-svn-id: https://angleproject.googlecode.com/svn/trunk@851 736b8ea6-26fd-11df-bfd4-992fa37f6226
parent 8747f18f
...@@ -135,6 +135,21 @@ class Image ...@@ -135,6 +135,21 @@ class Image
IDirect3DSurface9 *mSurface; IDirect3DSurface9 *mSurface;
}; };
class TextureStorage
{
public:
explicit TextureStorage(bool renderable);
virtual ~TextureStorage();
bool isRenderable();
private:
DISALLOW_COPY_AND_ASSIGN(TextureStorage);
bool mIsRenderable;
};
class Texture : public RefCountObject class Texture : public RefCountObject
{ {
public: public:
...@@ -205,8 +220,6 @@ class Texture : public RefCountObject ...@@ -205,8 +220,6 @@ class Texture : public RefCountObject
bool mDirtyImages; bool mDirtyImages;
bool mIsRenderable;
unsigned int mSerial; unsigned int mSerial;
static unsigned int issueSerial(); static unsigned int issueSerial();
...@@ -216,6 +229,22 @@ class Texture : public RefCountObject ...@@ -216,6 +229,22 @@ class Texture : public RefCountObject
static unsigned int mCurrentSerial; static unsigned int mCurrentSerial;
}; };
class TextureStorage2D : public TextureStorage
{
public:
TextureStorage2D(IDirect3DTexture9 *texture, bool renderable);
virtual ~TextureStorage2D();
IDirect3DSurface9 *getSurfaceLevel(int level);
IDirect3DBaseTexture9 *getBaseTexture() const;
private:
DISALLOW_COPY_AND_ASSIGN(TextureStorage2D);
IDirect3DTexture9 *mTexture;
};
class Texture2D : public Texture class Texture2D : public Texture
{ {
public: public:
...@@ -261,12 +290,28 @@ class Texture2D : public Texture ...@@ -261,12 +290,28 @@ class Texture2D : public Texture
Image mImageArray[IMPLEMENTATION_MAX_TEXTURE_LEVELS]; Image mImageArray[IMPLEMENTATION_MAX_TEXTURE_LEVELS];
IDirect3DTexture9 *mTexture; TextureStorage2D *mTexture;
egl::Surface *mSurface; egl::Surface *mSurface;
BindingPointer<Renderbuffer> mColorbufferProxy; BindingPointer<Renderbuffer> mColorbufferProxy;
}; };
class TextureStorageCubeMap : public TextureStorage
{
public:
TextureStorageCubeMap(IDirect3DCubeTexture9 *texture, bool renderable);
virtual ~TextureStorageCubeMap();
IDirect3DSurface9 *getCubeMapSurface(int face, int level);
IDirect3DBaseTexture9 *getBaseTexture() const;
private:
DISALLOW_COPY_AND_ASSIGN(TextureStorageCubeMap);
IDirect3DCubeTexture9 *mTexture;
};
class TextureCubeMap : public Texture class TextureCubeMap : public Texture
{ {
public: public:
...@@ -326,7 +371,7 @@ class TextureCubeMap : public Texture ...@@ -326,7 +371,7 @@ class TextureCubeMap : public Texture
Image mImageArray[6][IMPLEMENTATION_MAX_TEXTURE_LEVELS]; Image mImageArray[6][IMPLEMENTATION_MAX_TEXTURE_LEVELS];
IDirect3DCubeTexture9 *mTexture; TextureStorageCubeMap *mTexture;
BindingPointer<Renderbuffer> mFaceProxies[6]; BindingPointer<Renderbuffer> mFaceProxies[6];
}; };
......
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