diff options
Diffstat (limited to 'source/modules/asura-core/Graphics/binding/_gpu_buffer.cpp')
-rw-r--r-- | source/modules/asura-core/Graphics/binding/_gpu_buffer.cpp | 118 |
1 files changed, 0 insertions, 118 deletions
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; - } - - } -} |