-Demos:
*added ImGUI styles *added new assets (fonts, shaders) *added cimgui.dll *added imports for bindbc-sdl (for WASM) *added simple demo *added demo launcher *added snake demo *impoved demo utils *added cimgui.bc library for WASM -improved wasm build script -small change in vector
This commit is contained in:
parent
73f2aa6861
commit
cb7609dcaa
82 changed files with 11188 additions and 413 deletions
121
demos/utils/source/ecs_utils/gfx/mesh.d
Normal file
121
demos/utils/source/ecs_utils/gfx/mesh.d
Normal file
|
|
@ -0,0 +1,121 @@
|
|||
module ecs_utils.gfx.mesh;
|
||||
|
||||
import bindbc.sdl;
|
||||
|
||||
import ecs.std;
|
||||
|
||||
import ecs_utils.gfx.buffer;
|
||||
|
||||
import glad.gl.gl;
|
||||
//import mutils.serializer.json;
|
||||
|
||||
extern(C):
|
||||
|
||||
struct Mesh
|
||||
{
|
||||
bool load(const char[] path) nothrow
|
||||
{
|
||||
struct LoadData
|
||||
{
|
||||
/*struct Vertex
|
||||
{
|
||||
struct Binding
|
||||
{
|
||||
@("malloc") string type;
|
||||
uint stride;
|
||||
}
|
||||
@("malloc") Binding[] bindings;
|
||||
}
|
||||
Vertex vertex;*/
|
||||
@("malloc") ushort[] indices;
|
||||
@("malloc") float[] vertices;
|
||||
//int i;
|
||||
|
||||
void dispose() nothrow
|
||||
{
|
||||
if(indices)Mallocator.dispose(indices);
|
||||
if(vertices)Mallocator.dispose(vertices);
|
||||
|
||||
/*foreach(binding; vertex.bindings)Mallocator.instance.dispose(cast(char[])binding.type);
|
||||
|
||||
if(vertex.bindings)Mallocator.instance.dispose(vertex.bindings);*/
|
||||
}
|
||||
}
|
||||
|
||||
char[] cpath = (cast(char*)alloca(path.length+1))[0..path.length+1];
|
||||
cpath[0..$-1] = path[0..$];
|
||||
cpath[$-1] = 0;
|
||||
|
||||
SDL_RWops* file = SDL_RWFromFile(cpath.ptr,"r");//SDL_LoadFile(cpath.ptr,);
|
||||
if(file)
|
||||
{
|
||||
size_t size = cast(size_t)SDL_RWsize(file);
|
||||
//data.code = Mallocator.instance.makeArray!char(size);
|
||||
//data.code[$-1] = 0;
|
||||
char[] buffer = Mallocator.makeArray!char(size);
|
||||
SDL_RWread(file,buffer.ptr,size,1);
|
||||
|
||||
LoadData load_data;
|
||||
scope(exit)load_data.dispose();
|
||||
|
||||
/*JSONSerializer serializer = Mallocator.make!JSONSerializer;
|
||||
scope(exit)Mallocator.dispose(serializer);
|
||||
serializer.serialize!(Load.yes, true)(load_data,buffer);*/
|
||||
|
||||
indices = Mallocator.makeArray(load_data.indices);
|
||||
/*vertex.create();
|
||||
Vertex.Binding[] bindings = (cast(Vertex.Binding*)alloca(Vertex.Binding.sizeof*load_data.vertex.bindings.length))[0..load_data.vertex.bindings.length];
|
||||
uint vertex_size = 0;
|
||||
uint alignment = 4;
|
||||
foreach(i, binding;load_data.vertex.bindings)
|
||||
{
|
||||
uint new_size = binding.stride;
|
||||
bindings[i].stride = binding.stride;
|
||||
if(binding.type == "float_rg")
|
||||
{
|
||||
bindings[i].type = Vertex.Type.float_rg;
|
||||
new_size += 8;
|
||||
}
|
||||
if(new_size > vertex_size)vertex_size = new_size;
|
||||
//new_size = new_size + (3 - (new_size)%alignment)
|
||||
}
|
||||
vertex.data.size = vertex_size;
|
||||
vertex.attachBindings(bindings);*/
|
||||
|
||||
vertices = Mallocator.makeArray(load_data.vertices);
|
||||
/*vertices = Mallocator.instance.makeArray!ubyte(vertex_size * load_data.vertices.length);
|
||||
{
|
||||
foreach()
|
||||
}*/
|
||||
|
||||
SDL_RWclose(file);
|
||||
load_data.dispose();
|
||||
return true;
|
||||
}
|
||||
else return false;
|
||||
}
|
||||
|
||||
void uploadData() nothrow
|
||||
{
|
||||
vbo.create();
|
||||
vbo.bufferData(Buffer.BindTarget.array,16,cast(uint)vertices.length,GL_STATIC_DRAW,vertices.ptr);
|
||||
|
||||
ibo.create();
|
||||
ibo.bufferData(Buffer.BindTarget.element_array,2,cast(uint)indices.length,GL_STATIC_DRAW,indices.ptr);
|
||||
}
|
||||
|
||||
void bind() nothrow
|
||||
{
|
||||
vbo.bind(Buffer.BindTarget.array);
|
||||
ibo.bind(Buffer.BindTarget.element_array);
|
||||
|
||||
glVertexAttribPointer(0,2,GL_FLOAT,false,16,null);
|
||||
glVertexAttribPointer(1,2,GL_FLOAT,false,16,cast(void*)8);
|
||||
}
|
||||
|
||||
float[] vertices;
|
||||
ushort[] indices;
|
||||
Buffer vbo;
|
||||
Buffer ibo;
|
||||
//Vertex vertex;
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue