diff options
| author | chai <chaifix@163.com> | 2019-08-16 08:54:08 +0800 | 
|---|---|---|
| committer | chai <chaifix@163.com> | 2019-08-16 08:54:08 +0800 | 
| commit | a077eb38b01292611f4f6031b75e3e2c1c20f06e (patch) | |
| tree | 8f760483d7b0290952bbdb5bcd8f3943102aeb3a /source/modules/asura-core/graphics | |
| parent | 6a065c913e9308cc72e1ad0723b6167048f439b6 (diff) | |
Diffstat (limited to 'source/modules/asura-core/graphics')
19 files changed, 64 insertions, 1154 deletions
diff --git a/source/modules/asura-core/graphics/binding/_canvas.cpp b/source/modules/asura-core/graphics/binding/_canvas.cpp deleted file mode 100644 index 44841f5..0000000 --- a/source/modules/asura-core/graphics/binding/_canvas.cpp +++ /dev/null @@ -1,48 +0,0 @@ -#include "../Canvas.h" - -using namespace std; - -namespace_begin(AsuraEngine) -namespace_begin(Graphics) - -		 -		LUAX_REGISTRY(Canvas) -		{ -			LUAX_REGISTER_METHODS(state, -				{ "SetSize", _SetSize }, -				{ "Bind",    _Bind    }, -				{ "Unbind",  _Unbind  } -			); -		} - -		LUAX_POSTPROCESS(Canvas) -		{ - -		} - -		// canvas:SetSize() -		LUAX_IMPL_METHOD(Canvas, _SetSize) -		{ -			LUAX_PREPARE(L, Canvas); -			return 0; - -		} - -		// canvas:Bind() -		LUAX_IMPL_METHOD(Canvas, _Bind) -		{ -			LUAX_PREPARE(L, Canvas); - -			return 0; -		} - -		// canvas:Unbind() -		LUAX_IMPL_METHOD(Canvas, _Unbind) -		{ -			LUAX_PREPARE(L, Canvas); -			return 0; - -		} - -	} -} diff --git a/source/modules/asura-core/graphics/binding/_color.cpp b/source/modules/asura-core/graphics/binding/_color.cpp deleted file mode 100644 index 008d9c2..0000000 --- a/source/modules/asura-core/graphics/binding/_color.cpp +++ /dev/null @@ -1,130 +0,0 @@ -#include "../Color.h" - -using namespace std; -using namespace Luax; - -namespace_begin(AsuraEngine) -namespace_begin(Graphics) - -		 -LUAX_REGISTRY(Color) -{ -	LUAX_REGISTER_METHODS(state, -		{ "ToColor32", _ToColor32 }, -		{ "SetColor",  _SetColor  }, -		{ "GetColor",  _GetColor  }, -		{ "GetR",      _GetR      }, -		{ "GetG",      _GetG      }, -		{ "GetB",      _GetB      }, -		{ "GetA",      _GetA      }, -		{ "__eq",      ___eq      }, -		{ "__add",     ___add     }, -		{ "__sub",     ___sub     }, -		{ "__mul",     ___mul     }, -		{ "__div",     ___div     } -	); -} - -LUAX_POSTPROCESS(Color) -{ - -} - -// color:ToColor32() -LUAX_IMPL_METHOD(Color, _ToColor32) -{ -	LUAX_PREPARE(L, Color); - -	return 0; -} - -// color:SetColor() -LUAX_IMPL_METHOD(Color, _SetColor) -{ -	LUAX_PREPARE(L, Color); - -	return 0; -} - -// color:GetColor() -LUAX_IMPL_METHOD(Color, _GetColor) -{ -	LUAX_PREPARE(L, Color); - -	return 0; -} - -// color:GetR() -LUAX_IMPL_METHOD(Color, _GetR) -{ -	LUAX_PREPARE(L, Color); - -	return 0; -} - -// color:GetG() -LUAX_IMPL_METHOD(Color, _GetG) -{ -	LUAX_PREPARE(L, Color); - -	return 0; -} - -// color:GetB() -LUAX_IMPL_METHOD(Color, _GetB) -{ -	LUAX_PREPARE(L, Color); - -	return 0; -} - -// color:GetA() -LUAX_IMPL_METHOD(Color, _GetA) -{ -	LUAX_PREPARE(L, Color); - -	return 0; -} - -// color:__eq() -LUAX_IMPL_METHOD(Color, ___eq) -{ -	LUAX_PREPARE(L, Color); - -	return 0; -} - -// color:__add() -LUAX_IMPL_METHOD(Color, ___add) -{ -	LUAX_PREPARE(L, Color); - -	return 0; -} - -// color:__sub() -LUAX_IMPL_METHOD(Color, ___sub) -{ -	LUAX_PREPARE(L, Color); - -	return 0; -} - -// color:__mul() -LUAX_IMPL_METHOD(Color, ___mul) -{ -	LUAX_PREPARE(L, Color); - -	return 0; -} - -// color:__div() -LUAX_IMPL_METHOD(Color, ___div) -{ -	LUAX_PREPARE(L, Color); - -	return 0; -} - -} -}
\ No newline at end of file diff --git a/source/modules/asura-core/graphics/binding/_color32.cpp b/source/modules/asura-core/graphics/binding/_color32.cpp deleted file mode 100644 index 7613361..0000000 --- a/source/modules/asura-core/graphics/binding/_color32.cpp +++ /dev/null @@ -1,66 +0,0 @@ -#include "../Color32.h" - -using namespace std; - -namespace_begin(AsuraEngine) -namespace_begin(Graphics) - -		 -		LUAX_REGISTRY(Color32) -		{ -			LUAX_REGISTER_METHODS(state, -				{ "ToColor",  _ToColor  }, -				{ "GetRed",   _GetRed   }, -				{ "GetGreen", _GetGreen }, -				{ "GetBlue",  _GetBlue  }, -				{ "GetAlpha", _GetAlpha } -			); -		} - -		LUAX_POSTPROCESS(Color32) -		{ - -		} - -		// color32:ToColor() -		LUAX_IMPL_METHOD(Color32, _ToColor) -		{ -			LUAX_PREPARE(L, Color32); -			return 0; - -		} - -		// color32:GetRed() -		LUAX_IMPL_METHOD(Color32, _GetRed) -		{ -			LUAX_PREPARE(L, Color32); -			return 0; -		} - -		// color32:GetGreen() -		LUAX_IMPL_METHOD(Color32, _GetGreen) -		{ -			LUAX_PREPARE(L, Color32); - -			return 0; -		} - -		// color32:GetBlue() -		LUAX_IMPL_METHOD(Color32, _GetBlue) -		{ -			LUAX_PREPARE(L, Color32); - -			return 0; -		} - -		// color32:GetAlpha() -		LUAX_IMPL_METHOD(Color32, _GetAlpha) -		{ -			LUAX_PREPARE(L, Color32); - -			return 0; -		} - -	} -} - 
\ No newline at end of file diff --git a/source/modules/asura-core/graphics/binding/_gfx_device.cpp b/source/modules/asura-core/graphics/binding/_gfx_device.cpp deleted file mode 100644 index f6c2004..0000000 --- a/source/modules/asura-core/graphics/binding/_gfx_device.cpp +++ /dev/null @@ -1,151 +0,0 @@ -#include "../GfxDevice.h" - -using namespace std; -using namespace Luax; - -namespace_begin(AsuraEngine) -namespace_begin(Graphics) - -		 -		LUAX_REGISTRY(GfxDevice) -		{ -			LUAX_REGISTER_METHODS(state, -				{ "SetMatrixMode",  _SetMatrixMode  }, -				{ "GetMatrixMode",  _GetMatrixMode  }, -				{ "PushMatrix",     _PushMatrix     }, -				{ "PopMatrix",      _PopMatrix      }, -				{ "LoadIdentity",   _LoadIdentity   }, -				{ "Rotate",         _Rotate         }, -				{ "Translate",      _Translate      }, -				{ "Scale",          _Scale          }, -				{ "Ortho",          _Ortho          }, -				{ "GetMatrixDepth", _GetMatrixDepth }, -				{ "GetMatrixIndex", _GetMatrixIndex }, -				{ "UseShader",      _UseShader      }, -				{ "UnuseShader",    _UnuseShader    } -			); -		} - -		LUAX_POSTPROCESS(GfxDevice) -		{ -			LUAX_REGISTER_ENUM(state, "EMatrixMode", -				{ "PROJECTION", MATRIX_MODE_PROJECTION }, -				{ "0",          0                      }, -				{ "MODEL",      MATRIX_MODE_MODEL      }, -				{ "1",          1                      }, -				{ "VIEW",       MATRIX_MODE_VIEW       }, -				{ "2",          2                      } -			); -			LUAX_REGISTER_ENUM(state, "EGLParams", -				{ "MAX_TEXTURE_UNIT", GL_PARAM_MAX_TEXTURE_UNIT }, -				{ "1",                1                         } -			); - -		} - -		// gfxdevice:SetMatrixMode() -		LUAX_IMPL_METHOD(GfxDevice, _SetMatrixMode) -		{ -			LUAX_PREPARE(L, GfxDevice); - -			return 0; -		} - -		// gfxdevice:GetMatrixMode() -		LUAX_IMPL_METHOD(GfxDevice, _GetMatrixMode) -		{ -			LUAX_PREPARE(L, GfxDevice); - -			return 0; -		} - -		// gfxdevice:PushMatrix() -		LUAX_IMPL_METHOD(GfxDevice, _PushMatrix) -		{ -			LUAX_PREPARE(L, GfxDevice); - -			return 0; -		} - -		// gfxdevice:PopMatrix() -		LUAX_IMPL_METHOD(GfxDevice, _PopMatrix) -		{ -			LUAX_PREPARE(L, GfxDevice); - -			return 0; -		} - -		// gfxdevice:LoadIdentity() -		LUAX_IMPL_METHOD(GfxDevice, _LoadIdentity) -		{ -			LUAX_PREPARE(L, GfxDevice); - -			return 0; -		} - -		// gfxdevice:Rotate() -		LUAX_IMPL_METHOD(GfxDevice, _Rotate) -		{ -			LUAX_PREPARE(L, GfxDevice); - -			return 0; -		} - -		// gfxdevice:Translate() -		LUAX_IMPL_METHOD(GfxDevice, _Translate) -		{ -			LUAX_PREPARE(L, GfxDevice); - -			return 0; -		} - -		// gfxdevice:Scale() -		LUAX_IMPL_METHOD(GfxDevice, _Scale) -		{ -			LUAX_PREPARE(L, GfxDevice); - -			return 0; -		} - -		// gfxdevice:Ortho() -		LUAX_IMPL_METHOD(GfxDevice, _Ortho) -		{ -			LUAX_PREPARE(L, GfxDevice); - -			return 0; -		} - -		// gfxdevice:GetMatrixDepth() -		LUAX_IMPL_METHOD(GfxDevice, _GetMatrixDepth) -		{ -			LUAX_PREPARE(L, GfxDevice); - -			return 0; -		} - -		// gfxdevice:GetMatrixIndex() -		LUAX_IMPL_METHOD(GfxDevice, _GetMatrixIndex) -		{ -			LUAX_PREPARE(L, GfxDevice); - -			return 0; -		} - -		// gfxdevice:UseShader() -		LUAX_IMPL_METHOD(GfxDevice, _UseShader) -		{ -			LUAX_PREPARE(L, GfxDevice); - -			return 0; -		} - -		// gfxdevice:UnuseShader() -		LUAX_IMPL_METHOD(GfxDevice, _UnuseShader) -		{ -			LUAX_PREPARE(L, GfxDevice); - -			return 0; -		} - -	} -} diff --git a/source/modules/asura-core/graphics/binding/_gpu_buffer.cpp b/source/modules/asura-core/graphics/binding/_gpu_buffer.cpp deleted file mode 100644 index 8c39a59..0000000 --- a/source/modules/asura-core/graphics/binding/_gpu_buffer.cpp +++ /dev/null @@ -1,118 +0,0 @@ -#include <stdlib.h> - -#include "../image.h" -#include "../GPUBuffer.h" - -using namespace std; -using namespace Luax; - -namespace_begin(AsuraEngine) -namespace_begin(Graphics) - -		 -		LUAX_REGISTRY(GPUBuffer) -		{ -			LUAX_REGISTER_METHODS(state, -				{ "Fill",     _Fill     }, -				{ "GetSize",  _GetSize  }, -				{ "GetCount", _GetCount } -			); -		} - -		LUAX_POSTPROCESS(GPUBuffer) -		{ -			LUAX_REGISTER_ENUM(state, "EBufferType", -				{ "VERTEX", BUFFER_TYPE_VERTEX }, -				{ "INDEX",  BUFFER_TYPE_INDEX  } -			); -			LUAX_REGISTER_ENUM(state, "EBufferUsage", -				{ "STREAM",  BUFFER_USAGE_STREAM  }, -				{ "DYNAMIC", BUFFER_USAGE_DYNAMIC }, -				{ "STATIC",  BUFFER_USAGE_STATIC  } -			); -			LUAX_REGISTER_ENUM(state, "EBufferDataType", -				{ "INT",           BUFFER_DATA_TYPE_INT           }, -				{ "FLOAT",         BUFFER_DATA_TYPE_FLOAT         }, -				{ "UNSIGNED_BYTE", BUFFER_DATA_TYPE_UNSIGNED_BYTE } -			); - -		} - -		// buffer = GPUBuffer.New(bufferType, bufferUsage, bufferDataType, size) -		// buffer = GPUBuffer.New(image)  -		// buffer = GPUBuffer.New(mesh2d) -		// buffer = GPUBuffer.New(canvas) -		// buffer = GPUBuffer.New(shape) -		//LUAX_IMPL_METHOD(GPUBuffer, _New) -		//{ -		//	LUAX_STATE(L); - -		//	return 0; -		//} - -		// gpubuffer:Fill({data_unit_list}, offseti) -		//    data_unit_list ݵtable  -		//    offseti        : ʼǵĵطڵ(0ʼ -		LUAX_IMPL_METHOD(GPUBuffer, _Fill) -		{ -			LUAX_PREPARE(L, GPUBuffer); - -			// ʹbufferӦbufferڵһεʱʼsizeСbufferȻ䡣 -			int offset = state.GetValue(3, 0); -			int count = lua_objlen(L, 2); -			int size = count * self->GetDataTypeSize(); -			byte* data = (byte*)malloc(size); -			int unit = self->GetDataTypeSize(); -			int i = 1; -			lua_rawgeti(L, 2, i); -			while (!lua_isnil(L, -1)) -			{ -				switch (self->m_DataType) -				{ -					case GL_INT:  -					{ -						int n = state.CheckValue<int>(-1); -						memcpy(data + (i - 1)*unit, &n, unit); -						break;  -					} -					case GL_FLOAT:  -					{ -						float n = state.CheckValue<float>(-1);  -						memcpy(data + (i - 1)*unit, &n, unit); -						break; -					} -					case GL_UNSIGNED_BYTE:  -					{ -						unsigned char n = state.CheckValue<unsigned char>(-1); -						memcpy(data + (i - 1)*unit, &n, unit); -						break; -					} -				} -				state.Pop(1); // value -				lua_rawgeti(L, 2, ++i); -			} -			state.Pop(); // nil - -			self->Fill(data, size, offset * unit); - -			free(data); -			return 0; -		} - -		// gpubuffer:GetSize() -		LUAX_IMPL_METHOD(GPUBuffer, _GetSize) -		{ -			LUAX_PREPARE(L, GPUBuffer); -			state.Push(self->m_Size); -			return 0; -		} - -		LUAX_IMPL_METHOD(GPUBuffer, _GetCount) -		{ -			LUAX_PREPARE(L, GPUBuffer); -			state.Push(self->m_Size / self->GetDataTypeSize()); -			return 0; -		} - -	} -} diff --git a/source/modules/asura-core/graphics/binding/_image.cpp b/source/modules/asura-core/graphics/binding/_image.cpp deleted file mode 100644 index 0e4cb16..0000000 --- a/source/modules/asura-core/graphics/binding/_image.cpp +++ /dev/null @@ -1,71 +0,0 @@ -#include "../image.h" - -using namespace std; - -namespace_begin(AsuraEngine) -namespace_begin(Graphics) - -		 -		LUAX_REGISTRY(Image) -		{ -			LUAX_INHERIT(state, Texture); - -			LUAX_REGISTER_METHODS(state, -				{ "New",       _New       }, -				{ "GetWidth",  _GetWidth  }, -				{ "GetHeight", _GetHeight }, -				{ "GetSize",   _GetSize   }, -				{ "Render",    _Render    } -			); -		} - -		LUAX_POSTPROCESS(Image) -		{ -		} - -		// image = Image.New() -		LUAX_IMPL_METHOD(Image, _New) -		{ -			LUAX_STATE(L); -			Image* img = new Image(); -			img->PushLuaxUserdata(state); -			return 1; -		} - -		// width = image:GetWidth() -		LUAX_IMPL_METHOD(Image, _GetWidth) -		{ -			LUAX_PREPARE(L, Image); -			state.Push(self->GetWidth()); -			return 1; -		} -		 -		// height = image:GetHeight() -		LUAX_IMPL_METHOD(Image, _GetHeight) -		{ -			LUAX_PREPARE(L, Image); -			state.Push(self->GetHeight()); -			return 1; -		} - -		// width, height = image:GetSize() -		LUAX_IMPL_METHOD(Image, _GetSize) -		{ -			LUAX_PREPARE(L, Image); -			int width = self->GetWidth(); -			int height = self->GetHeight(); -			state.Push(width); -			state.Push(height); -			return 2; -		} - -		// image:Render() -		LUAX_IMPL_METHOD(Image, _Render) -		{ -			LUAX_PREPARE(L, Image); - -			return 0; -		} - -	} -} diff --git a/source/modules/asura-core/graphics/binding/_index_buffer.cpp b/source/modules/asura-core/graphics/binding/_index_buffer.cpp deleted file mode 100644 index 151dc98..0000000 --- a/source/modules/asura-core/graphics/binding/_index_buffer.cpp +++ /dev/null @@ -1,31 +0,0 @@ -#include "../IndexBuffer.h" - -using namespace std; -using namespace Luax; - -namespace_begin(AsuraEngine) -namespace_begin(Graphics) - -		 -		LUAX_REGISTRY(IndexBuffer) -		{ -			LUAX_REGISTER_METHODS(state, -				{ "New", _New } -			); -		} - -		LUAX_POSTPROCESS(IndexBuffer) -		{ - -		} - -		// IndexBuffer.New() -		LUAX_IMPL_METHOD(IndexBuffer, _New) -		{ -			LUAX_STATE(L); - -			return 0; -		} - -	} -} diff --git a/source/modules/asura-core/graphics/binding/_mesh2d.cpp b/source/modules/asura-core/graphics/binding/_mesh2d.cpp deleted file mode 100644 index 4e3f426..0000000 --- a/source/modules/asura-core/graphics/binding/_mesh2d.cpp +++ /dev/null @@ -1,20 +0,0 @@ -#include "../mesh2d.h" - -using namespace std; - -namespace_begin(AsuraEngine) -namespace_begin(Graphics) - -		 -		LUAX_REGISTRY(Mesh2D) -		{ - -		} - -		LUAX_POSTPROCESS(Mesh2D) -		{ - -		} - -	} -} diff --git a/source/modules/asura-core/graphics/binding/_shader.cpp b/source/modules/asura-core/graphics/binding/_shader.cpp deleted file mode 100644 index 85fd388..0000000 --- a/source/modules/asura-core/graphics/binding/_shader.cpp +++ /dev/null @@ -1,131 +0,0 @@ -#include "../shader.h" - -using namespace std; -using namespace Luax; - -namespace_begin(AsuraEngine) -namespace_begin(Graphics) - -		 -		LUAX_REGISTRY(Shader) -		{ -			LUAX_REGISTER_METHODS(state, -				{ "New",                _New                }, -				{ "Load",               _Load               }, -				{ "Update",             _Update             }, -				{ "HasUniform",         _HasUniform         }, -				{ "GetUniformLocation", _GetUniformLocation }, -				{ "SetBuiltInUniforms", _SetBuiltInUniforms }, -				{ "SetUniformFloat",    _SetUniformFloat    }, -				{ "SetUniformTexture",  _SetUniformTexture  }, -				{ "SetUniformVector2",  _SetUniformVector2  }, -				{ "SetUniformVector3",  _SetUniformVector3  }, -				{ "SetUniformVector4",  _SetUniformVector4  }, -				{ "SetUniformColor",    _SetUniformColor    }, -				{ "SetBuiltInUniforms", _SetBuiltInUniforms } -			); -		} - -		LUAX_POSTPROCESS(Shader) -		{ - -		} - -		// Shader.New() -		LUAX_IMPL_METHOD(Shader, _New) -		{ -			LUAX_STATE(L); - -			return 0; -		} - -		// shader:Load() -		LUAX_IMPL_METHOD(Shader, _Load) -		{ -			LUAX_PREPARE(L, Shader); - -			return 0; -		} - -		// shader:Update() -		LUAX_IMPL_METHOD(Shader, _Update) -		{ -			LUAX_PREPARE(L, Shader); - -			return 0; -		} - -		// shader:HasUniform() -		LUAX_IMPL_METHOD(Shader, _HasUniform) -		{ -			LUAX_PREPARE(L, Shader); - -			return 0; -		} - -		// shader:GetUniformLocation() -		LUAX_IMPL_METHOD(Shader, _GetUniformLocation) -		{ -			LUAX_PREPARE(L, Shader); - -			return 0; -		} - -		// shader:SetBuiltInUniforms() -		LUAX_IMPL_METHOD(Shader, _SetBuiltInUniforms) -		{ -			LUAX_PREPARE(L, Shader); - -			return 0; -		} - -		// shader:SetUniformFloat() -		LUAX_IMPL_METHOD(Shader, _SetUniformFloat) -		{ -			LUAX_PREPARE(L, Shader); - -			return 0; -		} - -		// shader:SetUniformTexture() -		LUAX_IMPL_METHOD(Shader, _SetUniformTexture) -		{ -			LUAX_PREPARE(L, Shader); - -			return 0; -		} - -		// shader:SetUniformVector2() -		LUAX_IMPL_METHOD(Shader, _SetUniformVector2) -		{ -			LUAX_PREPARE(L, Shader); - -			return 0; -		} - -		// shader:SetUniformVector3() -		LUAX_IMPL_METHOD(Shader, _SetUniformVector3) -		{ -			LUAX_PREPARE(L, Shader); - -			return 0; -		} - -		// shader:SetUniformVector4() -		LUAX_IMPL_METHOD(Shader, _SetUniformVector4) -		{ -			LUAX_PREPARE(L, Shader); - -			return 0; -		} - -		// shader:SetUniformColor() -		LUAX_IMPL_METHOD(Shader, _SetUniformColor) -		{ -			LUAX_PREPARE(L, Shader); - -			return 0; -		} - -	} -} diff --git a/source/modules/asura-core/graphics/binding/_sprite_batch.cpp b/source/modules/asura-core/graphics/binding/_sprite_batch.cpp deleted file mode 100644 index 6b7d25c..0000000 --- a/source/modules/asura-core/graphics/binding/_sprite_batch.cpp +++ /dev/null @@ -1,20 +0,0 @@ -#include "../SpriteBatch.h" - -using namespace std; - -namespace_begin(AsuraEngine) -namespace_begin(Graphics) - -		 -		LUAX_REGISTRY(SpriteBatch) -		{ - -		} - -		LUAX_POSTPROCESS(SpriteBatch) -		{ - -		} - -	} -} diff --git a/source/modules/asura-core/graphics/binding/_texture.cpp b/source/modules/asura-core/graphics/binding/_texture.cpp deleted file mode 100644 index f5e5f17..0000000 --- a/source/modules/asura-core/graphics/binding/_texture.cpp +++ /dev/null @@ -1,85 +0,0 @@ -#include "../texture.h" - -using namespace std; - -namespace_begin(AsuraEngine) -namespace_begin(Graphics) - -		 -		LUAX_REGISTRY(Texture) -		{ -			LUAX_REGISTER_METHODS(state, -				{ "SetFilterMode", _SetFilterMode }, -				{ "SetWrapMode",   _SetWrapMode   }, -				{ "GetFilterMode", _GetFilterMode }, -				{ "GetWrapMode",   _GetWrapMode   }, -				{ "IsGenMipmap",   _IsGenMipmap   } -			); -		} - -		LUAX_POSTPROCESS(Texture) -		{ -			LUAX_REGISTER_ENUM(state, "EColorFormat", -				{ "UNKNOWN", COLOR_FORMAT_UNKNOWN }, -				{ "RGBA8",   COLOR_FORMAT_RGBA8   }, -				{ "RGBA32F", COLOR_FORMAT_RGBA32F } -			); -			LUAX_REGISTER_ENUM(state, "EFilterMode", -				{ "NEAREST", FILTER_MODE_NEAREST }, -				{ "LINEAR",  FILTER_MODE_LINEAR  } -			); -			LUAX_REGISTER_ENUM(state, "EWrapMode", -				{ "REPEAT",        WRAP_MODE_REPEAT        }, -				{ "MIRROR",        WRAP_MODE_MIRROR        }, -				{ "CLAMPTOEDGE",   WRAP_MODE_CLAMPTOEDGE   }, -				{ "CLAMPTOBORDER", WRAP_MODE_CLAMPTOBORDER } -			); - -		} - -		// texture:SetFilterMode(minFilter, magFilter) -		LUAX_IMPL_METHOD(Texture, _SetFilterMode) -		{ -			LUAX_PREPARE(L, Texture); -			FilterMode min = (FilterMode)state.CheckValue<int>(2); -			FilterMode mag = (FilterMode)state.CheckValue<int>(3); -			self->SetFilterMode(min, mag); -			return 0; -		} - -		// texture:SetWrapMode(wrap_mode) -		LUAX_IMPL_METHOD(Texture, _SetWrapMode) -		{ -			LUAX_PREPARE(L, Texture); -			WrapMode wrap_mode = (WrapMode)state.CheckValue<int>(2); -			self->SetWrapMode(wrap_mode); -			return 0; -		} - -		// min, mag = texture:GetFilterMode() -		LUAX_IMPL_METHOD(Texture, _GetFilterMode) -		{ -			LUAX_PREPARE(L, Texture); -			state.Push((int)self->m_MinFilter); -			state.Push((int)self->m_MagFilter); -			return 2; -		} - -		// wrapmode=  texture:GetWrapMode() -		LUAX_IMPL_METHOD(Texture, _GetWrapMode) -		{ -			LUAX_PREPARE(L, Texture); -			state.Push((int)self->m_WrapMode); -			return 1; -		} - -		// texture:IsGenMipmap() -		LUAX_IMPL_METHOD(Texture, _IsGenMipmap) -		{ -			LUAX_PREPARE(L, Texture); -			state.Push(self->IsGenMipmap()); -			return 1; -		} - -	} -}
\ No newline at end of file diff --git a/source/modules/asura-core/graphics/binding/_vertex_buffer.cpp b/source/modules/asura-core/graphics/binding/_vertex_buffer.cpp deleted file mode 100644 index 8ed487b..0000000 --- a/source/modules/asura-core/graphics/binding/_vertex_buffer.cpp +++ /dev/null @@ -1,38 +0,0 @@ -#include "../VertexBuffer.h" - -using namespace std; -using namespace Luax; - -namespace_begin(AsuraEngine) -namespace_begin(Graphics) - -		 -		LUAX_REGISTRY(VertexBuffer) -		{ -			LUAX_REGISTER_METHODS(state, -				{ "New", _New } -			); -		} - -		LUAX_POSTPROCESS(VertexBuffer) -		{ - -		} - -		// vbo = VertexBuffer.New(usage, data_type, count) -		LUAX_IMPL_METHOD(VertexBuffer, _New) -		{ -			LUAX_STATE(L); - -			BufferUsage usage = (BufferUsage)state.CheckValue<uint>(1); -			BufferDataType datatype = (BufferDataType)state.CheckValue<uint>(2); -			uint count = state.CheckValue<uint>(3); - -			VertexBuffer* vbo = new VertexBuffer(usage, datatype, count * GPUBuffer::GetDataTypeSize(datatype)); -			vbo->PushLuaxUserdata(state); - -			return 1; -		} - -	} -} diff --git a/source/modules/asura-core/graphics/image.cpp b/source/modules/asura-core/graphics/image.cpp deleted file mode 100644 index 36d2478..0000000 --- a/source/modules/asura-core/graphics/image.cpp +++ /dev/null @@ -1,103 +0,0 @@ -#include <asura-base/Exception.h> - -#include "../CoreConfig.h" - -#include "Shader.h" -#include "Image.h" -#include "GfxDevice.h" - -using namespace AEFileSystem; -using namespace AEImage; - -namespace_begin(AsuraEngine) -namespace_begin(Graphics) - -Image::Image() -	: m_Width(0) -	, m_Height(0) -{ -} - -Image::~Image() -{ -} - -bool Image::Load(ImageData* imgData) -{ -	if (!imgData) return false;  - -	if (m_TexID == 0) -	{ -		glGenTextures(1, &m_TexID); -		if (m_TexID == 0) -			throw Exception("OpenGL glGenTextures failed."); -	} - -	glBindTexture(GL_TEXTURE_2D, m_TexID); -	imgData->Lock(); -	int width = imgData->width; -	int height = imgData->height; -	TextureFormat tf = ConvertColorFormat(imgData->format); -	glTexImage2D( -		GL_TEXTURE_2D -		, 0 -		, tf.internalformat -		, width, height -		, 0 -		, tf.externalformat -		, tf.type -		, imgData->pixels -	); - -	m_Width = imgData->width;  -	m_Height = imgData->height; -	imgData->Unlock(); -	GLenum err = glGetError();  -	if (err != GL_NO_ERROR) -		throw Exception("OpenGL glTexImage2D cause error, error code=%d", err); -	glBindTexture(GL_TEXTURE_2D, 0); - -	return true; -} - -bool Image::Load(ImageData* imgData, const AEMath::Vector2i& pos) -{ -	if (!imgData) return false; - -	glBindTexture(GL_TEXTURE_2D, m_TexID); -	imgData->Lock(); -	int width = imgData->width; -	int height = imgData->height; -	TextureFormat tf = ConvertColorFormat(imgData->format); -	glTexSubImage2D( -		GL_TEXTURE_2D -		, 0 -		, pos.x -		, pos.y -		, imgData->width -		, imgData->height -		, tf.externalformat -		, tf.type -		, imgData->pixels -	); -	imgData->Unlock(); -	GLenum err = glGetError(); -	if (err != GL_NO_ERROR) -		throw Exception("OpenGL glTexSubImage2D cause error, error code=%d", err); -	glBindTexture(GL_TEXTURE_2D, 0); - -	return true; -} - -uint32 Image::GetWidth() -{ -	return m_Width; -} - -uint32 Image::GetHeight() -{ -	return m_Height; -} - -namespace_end -namespace_end
\ No newline at end of file diff --git a/source/modules/asura-core/graphics/image.h b/source/modules/asura-core/graphics/image.h deleted file mode 100644 index a76d06f..0000000 --- a/source/modules/asura-core/graphics/image.h +++ /dev/null @@ -1,63 +0,0 @@ -#ifndef _ASURA_ENGINE_IMAGE_H_ -#define _ASURA_ENGINE_IMAGE_H_ - -// asura modules  -#include <asura-base/Math/Rect.hpp> -#include <asura-base/Math/Vector2.hpp> -#include <asura-base/Scripting/Scripting.h> -#include <asura-base/FileSystem/Renewable.h> -#include <asura-base/Utilities/Stringmap.hpp> -#include <asura-base/Manager.hpp> - -// module -#include "../Image/ImageData.h" - -// folder -#include "Color.h" -#include "Color32.h" -#include "RenderState.h" -#include "GPUBuffer.h" -#include "Texture.h" - -namespace_begin(AsuraEngine) -namespace_begin(Graphics) - -class Image ASURA_FINAL : public AEScripting::Portable<Image, Texture> -{ -public: - -	Image(); -	~Image(); - -	bool Load(AEImage::ImageData* decodeData); -	bool Load(AEImage::ImageData* decodeData, const AEMath::Vector2i& pos); - -	uint GetWidth(); -	uint GetHeight(); - -	GPUBuffer* GenGPUBuffer(); - -private: - -	uint32 m_Width, m_Height; - -luaxport: - -	LUAX_DECL_FACTORY(Image, Texture); - -	LUAX_DECL_METHOD(_New); -	LUAX_DECL_METHOD(_Load); -	LUAX_DECL_METHOD(_GetWidth); -	LUAX_DECL_METHOD(_GetHeight); -	LUAX_DECL_METHOD(_GetSize); -	LUAX_DECL_METHOD(_GetPixel); -	LUAX_DECL_METHOD(_Render); - -}; - -namespace_end -namespace_end - -namespace AEGraphics = AsuraEngine::Graphics; - -#endif
\ No newline at end of file diff --git a/source/modules/asura-core/graphics/mesh2d.cpp b/source/modules/asura-core/graphics/mesh2d.cpp deleted file mode 100644 index e69de29..0000000 --- a/source/modules/asura-core/graphics/mesh2d.cpp +++ /dev/null diff --git a/source/modules/asura-core/graphics/mesh2d.h b/source/modules/asura-core/graphics/mesh2d.h deleted file mode 100644 index 7a0f62e..0000000 --- a/source/modules/asura-core/graphics/mesh2d.h +++ /dev/null @@ -1,52 +0,0 @@ -#ifndef _ASURA_ENGINE_MESH2D_H__ -#define _ASURA_ENGINE_MESH2D_H__ - -// cpp -#include <vector> - -// asura modules -#include <asura-base/Scripting/Scripting.h> -#include <asura-base/Math/Vector2.hpp> - -// module  -#include "../Mesh/Mesh2dData.h" - -// folder -#include "Color.h" -#include "VertexBuffer.h" -#include "IndexBuffer.h" - -namespace_begin(AsuraEngine) -namespace_begin(Graphics) -		 -/// -/// 2D meshһЩ㶯 -/// https://en.wikipedia.org/wiki/Polygon_mesh -/// -class Mesh2D ASURA_FINAL  -	: public Scripting::Portable<Mesh2D> -{ -public: - -	Mesh2D(); -	~Mesh2D(); - -	bool Load(AEMesh::Mesh2DData* data); - -private:  - -	VertexBuffer* m_VBO; ///< vertex buffer  -	IndexBuffer*  m_IBO; ///< index buffer  - -luaxport:  - -	LUAX_DECL_FACTORY(Mesh2D); - -	LUAX_DECL_METHOD(_SetVertex); - -}; - -namespace_end -namespace_end - -#endif
\ No newline at end of file diff --git a/source/modules/asura-core/graphics/shader.cpp b/source/modules/asura-core/graphics/shader.cpp index 329b3f1..56d638d 100644 --- a/source/modules/asura-core/graphics/shader.cpp +++ b/source/modules/asura-core/graphics/shader.cpp @@ -24,12 +24,12 @@ Shader::~Shader()  void Shader::SetActive(Shader* shader)  { -	g_Device.SetActiveShader(shader);  +	g_GfxDevice.SetActiveShader(shader);   }  Shader* Shader::GetActive()  { -	return g_Device.GetActiveShader(); +	return g_GfxDevice.GetActiveShader();  }  bool Shader::Load(const string& vert, const string& frag) @@ -157,56 +157,56 @@ GLuint Shader::GetGLProgram()  void Shader::SetUniformFloat(uint loc, float value)  { -	if(g_Device.GetActiveShader() == this) +	if(g_GfxDevice.GetActiveShader() == this)  		glUniform1f(loc, value);  }  bool Shader::SetUniformTexture(uint loc, const Texture& texture)  { -	if (g_Device.GetActiveShader() != this) +	if (g_GfxDevice.GetActiveShader() != this)  		return false; -	g_Device.WipeError(); +	g_GfxDevice.WipeError();  	glActiveTexture(GL_TEXTURE0 + texUnit); -	if (g_Device.HasError()) +	if (g_GfxDevice.HasError())  		return false;  	GLint tex = texture.GetGLTexture();  	glBindTexture(GL_TEXTURE_2D, tex); -	if (g_Device.HasError()) +	if (g_GfxDevice.HasError())  		return false;  	glUniform1i(loc, texUnit); -	if (g_Device.HasError()) +	if (g_GfxDevice.HasError())  		return false;  	++texUnit;  }  void Shader::SetUniformVector2(uint loc, const Math::Vector2f& vec2)  { -	if (g_Device.GetActiveShader() == this) +	if (g_GfxDevice.GetActiveShader() == this)  		glUniform2f(loc, vec2.x, vec2.y);  }  void Shader::SetUniformVector3(uint loc, const Math::Vector3f& vec3)  { -	if (g_Device.GetActiveShader() == this) +	if (g_GfxDevice.GetActiveShader() == this)  		glUniform3f(loc, vec3.x, vec3.y, vec3.z);  }  void Shader::SetUniformVector4(uint loc, const Math::Vector4f& vec4)  { -	if (g_Device.GetActiveShader() == this) +	if (g_GfxDevice.GetActiveShader() == this)  		glUniform4f(loc, vec4.x, vec4.y, vec4.z, vec4.w);  }  void Shader::SetUniformMatrix44(uint loc, const Math::Matrix44& mat)  { -	if (g_Device.GetActiveShader() == this) +	if (g_GfxDevice.GetActiveShader() == this)  		glUniformMatrix4fv(loc, 1, GL_FALSE, mat.GetElements());  }  void Shader::SetUniformColor(uint loc, const Color& color)  { -	if (g_Device.GetActiveShader() == this) +	if (g_GfxDevice.GetActiveShader() == this)  		glUniform4f(loc, color.r, color.g, color.b, color.a);  } diff --git a/source/modules/asura-core/graphics/shader.h b/source/modules/asura-core/graphics/shader.h index 615b028..6d7ef90 100644 --- a/source/modules/asura-core/graphics/shader.h +++ b/source/modules/asura-core/graphics/shader.h @@ -3,6 +3,7 @@  #include <map>  #include <string> +#include <vector>  #include <asura-base/Exception.h>  #include <asura-base/Scripting/Scripting.h> @@ -23,10 +24,21 @@  namespace_begin(AsuraEngine)  namespace_begin(Graphics) +enum ShaderChannel +{ +	SHADER_CHANNEL_NONE = -1, +	SHADER_CHANNEL_VERTEX = 0, // Vertex (vector3) +	SHADER_CHANNEL_NORMAL,		 // Normal (vector3) +	SHADER_CHANNEL_COLOR,		   // Vertex color +	SHADER_CHANNEL_TEXCOORD0,	 // UV set 0 (vector2) +	SHADER_CHANNEL_TEXCOORD1,	 // UV set 1 (vector2) +	SHADER_CHANNEL_TANGENT,		 // Tangent (vector4) +	SHADER_CHANNEL_COUNT,			 // Keep this last! +}; +  /// -/// һshaderһڲʼ乲ijShaderuniformsͶݣֻṩ uniformsuseɫ -/// ķ༭ÿshaderͨshaderҵuniforms¶frameworkmaterial -/// á +/// һshaderһڲʼ乲ijShaderuniformsͶݣֻṩ uniformsuseɫķ +/// ༭ÿshaderͨshaderҵuniforms¶frameworkmaterialá  ///  class Shader ASURA_FINAL  	: public Scripting::Portable<Shader> @@ -64,10 +76,10 @@ public:  	bool SetUniformTexture(uint loc, const Texture& texture);  	float            GetUniformFloat(uint loc); -	AEMath::Vector2f GetUniformVector2(uint loc); -	AEMath::Vector3f GetUniformVector3(uint loc); -	AEMath::Vector4f GetUniformVector4s(uint loc); -	AEMath::Matrix44 GetUniformMatrix44(uint loc); +	Vector2f GetUniformVector2(uint loc); +	Vector3f GetUniformVector3(uint loc); +	Vector4f GetUniformVector4s(uint loc); +	Matrix44 GetUniformMatrix44(uint loc);  	GLuint GetGLProgram(); @@ -109,6 +121,7 @@ luaxport:  }; +// GPU program  typedef Shader GpuProgram;   namespace_end diff --git a/source/modules/asura-core/graphics/texture.h b/source/modules/asura-core/graphics/texture.h index 76b9a8f..572fad4 100644 --- a/source/modules/asura-core/graphics/texture.h +++ b/source/modules/asura-core/graphics/texture.h @@ -3,6 +3,7 @@  #include <asura-base/Math/Vector2.hpp>  #include <asura-base/Math/Rect.hpp> +#include <asura-base/Type.h>  #include "../CoreConfig.h" @@ -14,6 +15,17 @@ namespace_begin(Graphics)  class RenderTarget; +/// ͼƬ +class ImageData +{ +public: +	uint8* GetData(); +private:  +	int      m_Format; +	uint8*   m_ImageData; +	Vector2i m_ImageSize; +}; +  /// UVʽ  enum WrapMode  { @@ -34,8 +46,8 @@ enum FilterMode  enum ColorFormat  {  	COLOR_FORMAT_UNKNOWN, -	COLOR_FORMAT_RGBA8,   ///< RGBA8bits int -	COLOR_FORMAT_RGBA32F, ///< RGBA32bits float +	COLOR_FORMAT_RGBA8,   +	COLOR_FORMAT_RGBA32F,  };  /// ʽGPUڲCPUⲿʽ @@ -50,11 +62,14 @@ struct TextureFormat  /// 2D࣬2d meshrender targetбʹáTextureȾԭϽǣϷϲԵѿ  /// ϵΪEditorҲϽΪԭ㣬Ϊ˷㡣  /// -ASURA_ABSTRACT class Texture : public AEScripting::Object +class Texture : public AEScripting::Object  {  public: -	LUAX_DECL_ABSTRACT_FACTORY(Texture); +	LUAX_DECL_FACTORY(Texture); + +	// Texture generator  +	static Texture* GenerateTexture();  	Texture();  	virtual ~Texture(); @@ -67,9 +82,12 @@ public:  	void GetFilterMode();  	void GetWrapMode(); -	/// UVfilterΪ  	bool IsGenMipmap(); +	int      GetWidth(); +	int      GetHeight(); +	Vector2i GetSize(); +  protected:  	/// תcolor formatΪtexture format @@ -79,7 +97,12 @@ protected:  	FilterMode m_MinFilter;  	FilterMode m_MagFilter;  	WrapMode   m_WrapMode; +	int        m_UsageMode;  	bool       m_IsGenMipmap; +	Vector2f   m_TexelSize; +	Vector2f   m_UVScale; + +luaxport:  	LUAX_DECL_ENUM(ColorFormat, 1);  	LUAX_DECL_ENUM(FilterMode, 1); @@ -90,11 +113,12 @@ protected:  	LUAX_DECL_METHOD(_GetFilterMode);  	LUAX_DECL_METHOD(_GetWrapMode);  	LUAX_DECL_METHOD(_IsGenMipmap); +	LUAX_DECL_METHOD(_GetWidth); +	LUAX_DECL_METHOD(_GetHeight); +	LUAX_DECL_METHOD(_GetSize);  }; -typedef Texture Drawable; -  namespace_end  namespace_end  | 
