idk
This commit is contained in:
parent
e7c88c1c89
commit
5968ca324e
4 changed files with 90 additions and 2 deletions
|
@ -11,7 +11,7 @@ typedef struct g_renderer {
|
|||
} g_renderer;
|
||||
|
||||
typedef struct g_renderer_object {
|
||||
sg_bindings bind;
|
||||
sg_bindings* bind;
|
||||
sg_pipeline pipeline;
|
||||
} g_renderer_object;
|
||||
|
||||
|
|
23
shaders/simple.glsl
Normal file
23
shaders/simple.glsl
Normal file
|
@ -0,0 +1,23 @@
|
|||
@vs vs
|
||||
in vec4 pos;
|
||||
in vec4 color0;
|
||||
|
||||
out vec4 color;
|
||||
|
||||
void main() {
|
||||
gl_Position = pos;
|
||||
color = color0;
|
||||
}
|
||||
@end
|
||||
|
||||
@fs fs
|
||||
in vec4 color;
|
||||
out vec4 frag_color;
|
||||
|
||||
void main() {
|
||||
frag_color = color;
|
||||
}
|
||||
@end
|
||||
|
||||
@program simple vs fs
|
||||
|
|
@ -9,9 +9,9 @@ void g_renderer_begin(g_renderer* renderer) {
|
|||
void g_renderer_draw(g_renderer* renderer, g_renderer_object object, u32 elements) {
|
||||
if(renderer->bound_pipeline_id != object.pipeline.id) {
|
||||
g_pipeline_bind(renderer, object.pipeline);
|
||||
sg_apply_bindings(&object.bind);
|
||||
}
|
||||
|
||||
sg_apply_bindings(object.bind);
|
||||
sg_draw(0, elements, 1);
|
||||
};
|
||||
|
||||
|
|
65
src/main.c
65
src/main.c
|
@ -1,19 +1,34 @@
|
|||
#include "HandmadeMath/HandmadeMath.h"
|
||||
#include "gear/base.h"
|
||||
#include "gear/graphics/pipeline.h"
|
||||
#include "gear/images.h"
|
||||
#include "slibs/slibs.h"
|
||||
#include <gear/graphics/renderer.h>
|
||||
#include <gear/camera.h>
|
||||
#include <gear/ui/gui.h>
|
||||
#include <gear/ui/console.h>
|
||||
#include <gear/resources.h>
|
||||
#include <gear/graphics/models.h>
|
||||
#include <shaders/transform.glsl.h>
|
||||
|
||||
#include <sokol/sokol_app.h>
|
||||
#include <sokol/sokol_gfx.h>
|
||||
#include <sokol/sokol_log.h>
|
||||
#include <sokol/sokol_glue.h>
|
||||
|
||||
#include <stb/stb_image.h>
|
||||
|
||||
#include <log.c/log.h>
|
||||
|
||||
#include <gear/graphics/textures.h>
|
||||
|
||||
g_renderer* renderer;
|
||||
g_camera* camera;
|
||||
g_gui* gui;
|
||||
g_model* model;
|
||||
sg_pipeline pipeline;
|
||||
sg_bindings* bind;
|
||||
sg_attachments attachments;
|
||||
|
||||
void init() {
|
||||
sg_setup(&(sg_desc){
|
||||
|
@ -29,12 +44,62 @@ void init() {
|
|||
for(sl_vec_it(layer, gui->layers)) {
|
||||
log_info(" %s", (*layer)->name);
|
||||
}
|
||||
|
||||
g_vertex vertices[] = {
|
||||
{ 1.0f, 1.0f, 0.0f, G_WHITE, 1.0f * 32767, 1.0f * 32767 }, // top right
|
||||
{ 1.0f, -1.0f, 0.0f, G_WHITE, 1.0f * 32767, 0.0f * 32767 }, // bottom right
|
||||
{ -1.0f, -1.0f, 0.0f, G_WHITE, 0.0f * 32767, 0.0f * 32767 }, // bottom left
|
||||
{ -1.0f, 1.0f, 0.0f, G_WHITE, 0.0f * 32767, 1.0f * 32767 } // top left
|
||||
};
|
||||
|
||||
uint32_t indices[] = {
|
||||
0, 1, 3,
|
||||
1, 2, 3
|
||||
};
|
||||
|
||||
g_vertex_vec vertices_vec = { 0 };
|
||||
g_index_vec indices_vec = { 0 };
|
||||
sl_vec_from_arr(vertices_vec, vertices);
|
||||
sl_vec_from_arr(indices_vec, indices);
|
||||
|
||||
model = g_model_create(&vertices_vec, &indices_vec);
|
||||
|
||||
bind = calloc(1, sizeof(sg_bindings));
|
||||
bind->vertex_buffers[0] = model->vertex_buffer;
|
||||
bind->index_buffer = model->index_buffer;
|
||||
|
||||
g_texture* texture = g_texture_create_filtered(g_image_default(), SG_FILTER_NEAREST, SG_FILTER_NEAREST);
|
||||
bind->fs.images[SLOT_tex] = texture->image;
|
||||
bind->fs.samplers[SLOT_smp] = texture->sampler;
|
||||
|
||||
sg_shader shd = sg_make_shader(transform_shader_desc(sg_query_backend()));
|
||||
|
||||
pipeline = g_pipeline_create(shd, (sg_vertex_layout_state){
|
||||
.attrs = {
|
||||
[ATTR_vs_pos].format = SG_VERTEXFORMAT_FLOAT3,
|
||||
[ATTR_vs_color0].format = SG_VERTEXFORMAT_UBYTE4N,
|
||||
[ATTR_vs_texcoord0].format = SG_VERTEXFORMAT_SHORT2N,
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
void frame() {
|
||||
g_gui_update(gui);
|
||||
|
||||
g_renderer_begin(renderer);
|
||||
g_pipeline_bind(renderer, pipeline);
|
||||
|
||||
vs_params_t vs_params = {
|
||||
.mvp = HMM_Mul(g_camera_matrix(camera), HMM_Rotate_LH(HMM_AngleDeg(45.0f), HMM_V3(1.0f, 0.0f, 0.0f))),
|
||||
.texture_scale = HMM_V2(1.0f, 1.0f)
|
||||
};
|
||||
|
||||
sg_apply_uniforms(SG_SHADERSTAGE_VS, SLOT_vs_params, SG_RANGE_REF(vs_params));
|
||||
|
||||
g_renderer_draw(renderer, (g_renderer_object){
|
||||
.pipeline = pipeline,
|
||||
.bind = bind
|
||||
}, model->indices.size);
|
||||
g_gui_render(sapp_width(), sapp_height());
|
||||
g_renderer_end(renderer);
|
||||
}
|
||||
|
|
Loading…
Add table
Reference in a new issue