class OpenGLTexture2D: public Texture
{
protected:
- class AsyncLoader;
+ class AsyncTransfer: public NonCopyable
+ {
+ protected:
+ Buffer *pixel_buffer = 0;
- OpenGLTexture2D(ResourceManager *);
+ AsyncTransfer() = default;
+ AsyncTransfer(AsyncTransfer &&);
+ AsyncTransfer &operator=(AsyncTransfer &&);
+ ~AsyncTransfer();
+
+ void *allocate();
+ void finalize();
+ };
+
+ OpenGLTexture2D();
void allocate();
void sub_image(unsigned, int, int, unsigned, unsigned, const void *);
- void sub_image(unsigned, int, int, unsigned, unsigned, const Buffer &, unsigned);
- Resource::AsyncLoader *create_async_loader(IO::Seekable &);
- void unload();
+public:
+ virtual std::size_t get_data_size() const;
+ virtual void unload();
};
using Texture2DBackend = OpenGLTexture2D;