/******************************************************** * Texture2D.h * * * * XFX Texture2D definition file * * Copyright © XFX Team. All Rights Reserved * ********************************************************/ #ifndef _XFX_GRAPHICS_TEXTURE2D_ #define _XFX_GRAPHICS_TEXTURE2D_ #include "Texture.h" #include using namespace System; using namespace System::IO; namespace XFX { struct Rectangle; namespace Graphics { class Texture2D : public Texture, virtual Object { private: GraphicsDevice device; int _height; // The height of the texture before resizing it bool _isDisposed; // True when the texture has been disposed int _numberOfLevels; // The number of mip levels for the texture TextureUsage_t _textureUsage; SurfaceFormat_t _surfaceFormat; // The colour format of the texture int _width; // the width of the texture before resizing it int textureId; // The reference ID of the texture in OpenGL memory int imageId; Texture2D(GraphicsDevice graphicsDevice); void Load(byte buffer[]); protected: void Dispose(bool disposing); public: SurfaceFormat_t Format(); int Height(); TextureUsage_t TextureUsage_(); int Width(); Texture2D(); Texture2D(GraphicsDevice graphicsDevice, int width, int height); Texture2D(GraphicsDevice graphicsDevice, int width, int height, int numberLevels, TextureUsage_t usage, SurfaceFormat_t format); Texture2D(const Texture2D &obj); static Texture2D FromFile(GraphicsDevice graphicsDevice, Stream textureStream); static Texture2D FromFile(GraphicsDevice graphicsDevice, Stream textureStream, TextureCreationParameters creationParameters); static Texture2D FromFile(GraphicsDevice graphicsDevice, Stream textureStream, int numberBytes); static Texture2D FromFile(GraphicsDevice graphicsDevice, Stream textureStream, int numberBytes, TextureCreationParameters creationParameters); static Texture2D FromFile(GraphicsDevice graphicsDevice, char* filename); static Texture2D FromFile(GraphicsDevice graphicsDevice, char* filename, TextureCreationParameters creationParameters); static Texture2D FromFile(GraphicsDevice graphicsDevice, char* filename, int width, int height); template void GetData(T data[]); template void GetData(T data[], int startIndex, int elementCount); template void GetData(int level, Rectangle rect, T data[], int startIndex, int elementCount); template void SetData(T data[]); template void SetData(T data[], int startIndex, int elementCount, SetDataOptions_t options); template void SetData(int level, Rectangle rect, T data[], int startIndex, int elementCount, SetDataOptions_t options); }; } } #endif //_XFX_GRAPHICS_TEXTURE2D_