summaryrefslogtreecommitdiff
path: root/Runtime/Graphics/Texture.h
diff options
context:
space:
mode:
authorchai <chaifix@163.com>2021-10-26 19:33:40 +0800
committerchai <chaifix@163.com>2021-10-26 19:33:40 +0800
commit051abd04e4527095ef15412939450fbe504daebe (patch)
tree30a966d104ee866bc135cce58b4a5fa561c8c4e7 /Runtime/Graphics/Texture.h
parentb1228baf73f6dc3336e24afbf36087e15730732a (diff)
+texture & imagedata
Diffstat (limited to 'Runtime/Graphics/Texture.h')
-rw-r--r--Runtime/Graphics/Texture.h103
1 files changed, 69 insertions, 34 deletions
diff --git a/Runtime/Graphics/Texture.h b/Runtime/Graphics/Texture.h
index d09429c..30cf303 100644
--- a/Runtime/Graphics/Texture.h
+++ b/Runtime/Graphics/Texture.h
@@ -1,61 +1,96 @@
-#ifndef TEXTURE_H
-#define TEXTURE_H
+#pragma once
+#include <exception>
#include "Runtime/Lua/LuaHelper.h"
-#include "Runtime/Lua/LuaBind/LuaBind.h"
#include "../Utilities/UtilMacros.h"
#include "OpenGL.h"
-#include "ImageData.h"
-enum TextureFormat
+class ImageData;
+
+enum ETextureType
+{
+ TEX_2D,
+ TEX_CUBE,
+};
+
+enum ETextureFormat
+{
+ RGBA32,
+ RGB24,
+ RGB16,
+ R8,
+ A8,
+};
+
+enum ETextureWrapMode
+{
+ Clamp,
+ Repeat,
+ Mirror,
+};
+
+enum ETextureFilterMode
{
- TextureFormat_DepthComponent,
- TextureFormat_Red,
- TextureFormat_Green,
- TextureFormat_Blue,
- TextureFormat_Alpha,
- TextureFormat_Rgb,
- TextureFormat_Rgba,
+ Nearest,
+ Linear,
};
-enum TextureWrap
+struct TextureSetting
{
- TextureWrap_Clamp,
- TextureWrap_Repeat,
+ bool keepImageData; // 是否保存图片数据
+ int type; // 图片类型
+ int format; // 内部格式
+ int wrapMode; // 包围
+ int filterMode; // 滤波
};
-enum TextureFilter
+class TextureException : public std::exception
{
- TextureFilter_Nearest,
- TextureFilter_Bilinear,
- TextureFilter_Trilinear,
+public:
+ TextureException(const char* what)
+ : std::exception(what)
+ {}
};
-class Texture
+class Texture : public LuaBind::NativeClass<Texture>
{
public:
- Texture();
- Texture(ImageData* imgData, TextureFormat format);
- Texture(ImageData* imgData, TextureFormat format, TextureWrap wrap, TextureFilter filter);
+ Texture(LuaBind::VM* vm, TextureSetting setting, ImageData* imgData)/*throw TextureException*/;
~Texture();
GET(int, Width, m_Width);
GET(int, Height, m_Height);
- GET(TextureFilter, Filter, m_Filter);
- GET(TextureWrap, Wrap, m_Wrap);
-
- GET(GLint, Handle, m_Handle);
+ GET(GLuint, GpuID, m_GPUID);
protected:
- GLint m_Handle;
+ GLuint m_GPUID;
+
int m_Width, m_Height;
- TextureFilter m_Filter;
- TextureWrap m_Wrap;
-};
+ int m_Type;
+ int m_Format;
+ int m_FilterMode;
+ int m_WrapMode;
+
+ bool m_KeepPixelData; // 是否保存图像像素数据,默认导入后不保存
+
+ LuaBind::MemberRef m_ImageData; //图片像素数据
+
+ LUA_BIND_DECL_CLASS(Texture);
+
+ LUA_BIND_DECL_METHOD(_New);
+
+ LUA_BIND_DECL_METHOD(_GetWidth);
+ LUA_BIND_DECL_METHOD(_GetHeight);
+ LUA_BIND_DECL_METHOD(_GetSize);
+
+ LUA_BIND_DECL_METHOD(_GetType);
+ LUA_BIND_DECL_METHOD(_GetFormat);
+ LUA_BIND_DECL_METHOD(_GetWrapMode);
+ LUA_BIND_DECL_METHOD(_GetFilterMode);
-Texture* CreateTexture(ImageData* imgData, TextureFormat format);
-Texture* CreateTexture(ImageData* imgData, TextureFormat format, TextureWrap wrap, TextureFilter filter);
+ LUA_BIND_DECL_METHOD(_IsKeepImageData);
+ LUA_BIND_DECL_METHOD(_GetImageData);
-#endif \ No newline at end of file
+}; \ No newline at end of file