Android update and small improvements

-fixed code do cross compiling to android
-fixed build with GCC (workaround)
-added little benchmark
-several small fixes
-updated meson build (demos building, working with GCC, LDC and DMD)
-added some meson options
-added ImGUI bind for OpenGL3
This commit is contained in:
Mergul 2020-06-01 11:24:50 +02:00
parent 86edfa4a57
commit 66860b9042
30 changed files with 1358 additions and 173 deletions

View file

@ -2,8 +2,12 @@ module ecs_utils.gfx.buffer;
import bubel.ecs.std;
import glad.gl.gl;
import glad.gl.gles2;
//import glad.gl.gl;
//import glad.gl.gles2;
version(WebAssembly)import glad.gl.gles2;
else version(Android)import glad.gl.gles2;
else import glad.gl.gl;
extern(C):
@ -64,13 +68,13 @@ struct Buffer
void map(BindTarget target) nothrow
{
bind(target);
data.map_ptr = glMapBuffer(target,GL_WRITE_ONLY);
version(Android){}else data.map_ptr = glMapBuffer(target,GL_WRITE_ONLY);
}
void map(uint offset, uint size, BindTarget target, uint flags = MapFlagBits.write | MapFlagBits.flush_explict | MapFlagBits.invalidate_buffer) nothrow
{
bind(target);
data.map_ptr = glMapBufferRange(target,offset,size,flags);
version(Android){}else data.map_ptr = glMapBufferRange(target,offset,size,flags);
}
void flush(uint offset, uint size, BindTarget target) nothrow

View file

@ -6,7 +6,9 @@ import bubel.ecs.std;
import ecs_utils.gfx.shader;
import glad.gl.gl;
version(WebAssembly)import glad.gl.gles2;
else version(Android)import glad.gl.gles2;
else import glad.gl.gl;
//import mutils.serializer.json;

View file

@ -6,7 +6,9 @@ import bubel.ecs.std;
import ecs_utils.gfx.buffer;
import glad.gl.gl;
version(WebAssembly)import glad.gl.gles2;
else version(Android)import glad.gl.gles2;
else import glad.gl.gl;
//import mutils.serializer.json;
extern(C):

View file

@ -12,6 +12,7 @@ import ecs_utils.math.vector;
import bubel.ecs.block_allocator;
import bubel.ecs.vector;
version(WebAssembly)import glad.gl.gles2;
else version(Android)import glad.gl.gles2;
else import glad.gl.gl;
version = ver1;
@ -637,6 +638,7 @@ struct Renderer
if(threads[thread_id].block.items >= VertexBlock.max_items)
{
//pushBlock(threads[thread_id].block);
prepared_items += threads[thread_id].block.items;
threads[thread_id].blocks.add(threads[thread_id].block);
threads[thread_id].block = getBlock();
}
@ -667,6 +669,10 @@ struct Renderer
{
glDepthRangef(0,1);
}
else version(Android)
{
glDepthRangef(0,1);
}
else
{
glDepthRange(0,1);

View file

@ -4,7 +4,9 @@ import bindbc.sdl;
import bubel.ecs.std;
import glad.gl.gl;
version(WebAssembly)import glad.gl.gles2;
else version(Android)import glad.gl.gles2;
else import glad.gl.gl;
//version = ver1;
@ -67,10 +69,12 @@ struct Shader
}
version(WebAssembly)const char* glsl = "#version 100\n";
else version(Android)const char* glsl = "#version 100\n";
else const char* glsl = "#version 330\n";
const char* buffer = data.code.ptr;
char* ver;
version(WebAssembly)ver = cast(char*)"#define ver1 1\n#define GLES\n".ptr;
else version(Android)ver = cast(char*)"#define ver1 1\n#define GLES\n".ptr;
else ver = cast(char*)"#define ver1 1\n".ptr;
/*switch(__ecs_used_technique)
{

View file

@ -6,7 +6,9 @@ import bubel.ecs.std;
import ecs_utils.math.vector;
import glad.gl.gl;
version(WebAssembly)import glad.gl.gles2;
else version(Android)import glad.gl.gles2;
else import glad.gl.gl;
extern(C):