From 3f457498b9c39d40a16a0ec6328880854f8cf4de Mon Sep 17 00:00:00 2001 From: chai Date: Tue, 26 Feb 2019 08:48:54 +0800 Subject: *misc --- Source/Asura.Engine/Graphics/Image.h | 42 ++++++++++++++++++++++-------------- 1 file changed, 26 insertions(+), 16 deletions(-) (limited to 'Source/Asura.Engine/Graphics/Image.h') diff --git a/Source/Asura.Engine/Graphics/Image.h b/Source/Asura.Engine/Graphics/Image.h index bdd7c1c..391d1c4 100644 --- a/Source/Asura.Engine/Graphics/Image.h +++ b/Source/Asura.Engine/Graphics/Image.h @@ -7,6 +7,7 @@ #include "Texture.h" #include "Color.h" #include "Factory.h" +#include "SimClass.h" namespace AsuraEngine { @@ -19,10 +20,19 @@ namespace AsuraEngine /// Image是图片从内存中载入后,读取进游戏后保存的结果。一个Image在内存、显存中只会保存一份,不会产生副本。需要特征 /// 化的区别image,如锚点位置,缩放和旋转角度,使用sprite。是一个只读类。主要是考虑到editor和engine使用不同的封装。 /// - class Image final : public Texture + class Image final : public Texture, public SimClass { public: + Image(); + ~Image(); + + /// + /// 从数据buffer构建image,如果mPixels不为空,先清空数据。用来重新构建image,使用glTexImage2D重新提交image的像素 + /// 数据。 + /// + bool Load(const void* data, size_t size); + uint GetWidth(); uint GetHeight(); @@ -31,29 +41,29 @@ namespace AsuraEngine /// Color GetPixel(uint x, uint y); - private: + void Render(int x, int y, int sx, int sy, int ox, int oy, int r) override; - friend class ImageFactory; + void Render(const Math::Rect& quad, int x, int y, int sx, int sy, int ox, int oy, int r) override; - Image(Color* pixels, int width, int height); - ~Image(); + //---------------------------------------------------------------------------------------------------------- + + LUAX_DECL_FACTORY(SimImage); + + LUAX_DECL_METHOD(l_Load); + LUAX_DECL_METHOD(l_GetPixel); + LUAX_DECL_METHOD(l_GetWidth); + LUAX_DECL_METHOD(l_GetHeight); + + //---------------------------------------------------------------------------------------------------------- + + private: /// /// 大小(以像素为单位) /// uint mWidth, mHeight; - Color* mPixels; - - /// - /// ID - /// - uint mID; - - //---------------------------------------------------------------------------------------------------- - // 图片的Sim类,具体的封装在AsuraEngine.Image里面,包含一个成员AsuraEngine.SimImage,在AsuraEngine.Image里面对 - // 数据做一个缓存。 - LUAX_DECL_FACTORY(SimImage); + Color* mPixels; }; -- cgit v1.1-26-g67d0