Skip to content

Commit

Permalink
fix simple glfw samples
Browse files Browse the repository at this point in the history
  • Loading branch information
floooh committed Feb 15, 2024
1 parent c5bc21a commit 4a99bf2
Show file tree
Hide file tree
Showing 20 changed files with 341 additions and 451 deletions.
45 changes: 25 additions & 20 deletions glfw/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -8,105 +8,110 @@ if (FIPS_CLANG OR FIPS_GCC)
target_compile_options(flextgl12 PRIVATE -Wno-sign-conversion)
endif()

fips_begin_lib(glfw_glue)
fips_files(glfw_glue.c glfw_glue.h)
fips_deps(glfw3)
fips_end_lib()

fips_begin_app(clear-glfw cmdline)
fips_files(clear-glfw.c)
fips_deps(glfw3)
fips_deps(glfw_glue)
fips_end_app()

fips_begin_app(triangle-glfw cmdline)
fips_files(triangle-glfw.c)
fips_deps(glfw3)
fips_deps(glfw_glue)
fips_end_app()

fips_begin_app(quad-glfw cmdline)
fips_files(quad-glfw.c)
fips_deps(glfw3)
fips_deps(glfw_glue)
fips_end_app()

fips_begin_app(cube-glfw cmdline)
fips_files(cube-glfw.c)
fips_deps(glfw3)
fips_deps(glfw_glue)
fips_end_app()

fips_begin_app(texcube-glfw cmdline)
fips_files(texcube-glfw.c)
fips_deps(glfw3)
fips_deps(glfw_glue)
fips_end_app()

fips_begin_app(instancing-glfw cmdline)
fips_files(instancing-glfw.c)
fips_deps(glfw3)
fips_deps(glfw_glue)
fips_end_app()

fips_begin_app(offscreen-glfw cmdline)
fips_files(offscreen-glfw.c)
fips_deps(glfw3)
fips_deps(glfw_glue)
fips_end_app()

fips_begin_app(mrt-glfw cmdline)
fips_files(mrt-glfw.c)
fips_deps(glfw3)
fips_deps(glfw_glue)
fips_end_app()

fips_begin_app(arraytex-glfw cmdline)
fips_files(arraytex-glfw.c)
fips_deps(glfw3)
fips_deps(glfw_glue)
fips_end_app()

fips_begin_app(imgui-glfw cmdline)
fips_files(imgui-glfw.cc)
fips_deps(glfw3 imgui)
fips_deps(glfw_glue imgui)
fips_end_app()

fips_begin_app(dyntex-glfw cmdline)
fips_files(dyntex-glfw.c)
fips_deps(glfw3)
fips_deps(glfw_glue)
fips_end_app()

fips_begin_app(mipmap-glfw cmdline)
fips_files(mipmap-glfw.c)
fips_deps(glfw3)
fips_deps(glfw_glue)
fips_end_app()

fips_begin_app(blend-glfw cmdline)
fips_files(blend-glfw.c)
fips_deps(glfw3)
fips_deps(glfw_glue)
fips_end_app()

fips_begin_app(inject-glfw cmdline)
fips_files(inject-glfw.c)
fips_deps(glfw3)
fips_deps(glfw_glue)
fips_end_app()

fips_begin_app(bufferoffsets-glfw cmdline)
fips_files(bufferoffsets-glfw.c)
fips_deps(glfw3)
fips_deps(glfw_glue)
fips_end_app()

fips_begin_app(noninterleaved-glfw cmdline)
fips_files(noninterleaved-glfw.c)
fips_deps(glfw3)
fips_deps(glfw_glue)
fips_end_app()

fips_begin_app(multiwindow-glfw cmdline)
fips_files(multiwindow-glfw.c)
fips_deps(glfw3)
fips_deps(glfw_glue)
fips_end_app()

fips_begin_app(uniformarrays-glfw cmdline)
fips_files(uniformarrays-glfw.c)
fips_deps(glfw3)
fips_deps(glfw_glue)
fips_end_app()

fips_begin_app(sgl-test-glfw cmdline)
fips_files(sgl-test-glfw.c)
fips_deps(glfw3 flextgl12)
fips_deps(glfw_glue flextgl12)
fips_end_app()

if (FIPS_MACOS)
fips_begin_app(metal-glfw cmdline)
fips_files(metal-glfw.m)
fips_deps(glfw3)
fips_deps(glfw_glue)
fips_frameworks_osx(Cocoa QuartzCore Metal MetalKit AudioToolbox)
fips_end_app()
endif()
40 changes: 14 additions & 26 deletions glfw/arraytex-glfw.c
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,7 @@
#define SOKOL_GLCORE33
#include "sokol_gfx.h"
#include "sokol_log.h"
#define GLFW_INCLUDE_NONE
#include "GLFW/glfw3.h"
#include "glfw_glue.h"

typedef struct {
hmm_mat4 mvp;
Expand All @@ -19,28 +18,19 @@ typedef struct {
} params_t;

enum {
WIDTH = 800,
HEIGHT = 600,
IMG_LAYERS = 3,
IMG_WIDTH = 16,
IMG_HEIGHT = 16
};

int main() {
// create GLFW window and initialize GL
glfwInit();
glfwWindowHint(GLFW_SAMPLES, 4);
glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3);
glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 3);
glfwWindowHint(GLFW_OPENGL_FORWARD_COMPAT, GLFW_TRUE);
glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE);
GLFWwindow* w = glfwCreateWindow(WIDTH, HEIGHT, "Sokol Textured Cube GLFW", 0, 0);
glfwMakeContextCurrent(w);
glfwSwapInterval(1);

glfw_init("arraytex-glfw.c", 800, 600, 1);
// setup sokol_gfx
sg_desc desc = { .logger.func = slog_func };
sg_setup(&desc);
sg_setup(&(sg_desc){
.environment = glfw_environment(),
.logger.func = slog_func,
});
assert(sg_isvalid());

// a 16x16 array texture with 3 layers and a checkerboard pattern
Expand Down Expand Up @@ -208,15 +198,15 @@ int main() {
.colors[0] = { .load_action=SG_LOADACTION_CLEAR, .clear_value={0.0f, 0.0f, 0.0f, 1.0f} }
};

// view-projection matrix
hmm_mat4 proj = HMM_Perspective(60.0f, (float)WIDTH/(float)HEIGHT, 0.01f, 10.0f);
hmm_mat4 view = HMM_LookAt(HMM_Vec3(0.0f, 1.5f, 6.0f), HMM_Vec3(0.0f, 0.0f, 0.0f), HMM_Vec3(0.0f, 1.0f, 0.0f));
hmm_mat4 view_proj = HMM_MultiplyMat4(proj, view);

params_t vs_params;
float rx = 0.0f, ry = 0.0f;
int frame_index = 0;
while (!glfwWindowShouldClose(w)) {
while (!glfwWindowShouldClose(glfw_window())) {
// view-projection matrix
hmm_mat4 proj = HMM_Perspective(60.0f, (float)glfw_width()/(float)glfw_height(), 0.01f, 10.0f);
hmm_mat4 view = HMM_LookAt(HMM_Vec3(0.0f, 1.5f, 6.0f), HMM_Vec3(0.0f, 0.0f, 0.0f), HMM_Vec3(0.0f, 1.0f, 0.0f));
hmm_mat4 view_proj = HMM_MultiplyMat4(proj, view);

// rotated model matrix
rx += 0.25f; ry += 0.5f;
hmm_mat4 rxm = HMM_Rotate(rx, HMM_Vec3(1.0f, 0.0f, 0.0f));
Expand All @@ -231,16 +221,14 @@ int main() {
vs_params.offset1 = HMM_Vec2(offset, -offset);
vs_params.offset2 = HMM_Vec2(0.0f, 0.0f);

int cur_width, cur_height;
glfwGetFramebufferSize(w, &cur_width, &cur_height);
sg_begin_default_pass(&pass_action, cur_width, cur_height);
sg_begin_pass(&(sg_pass){ .action = pass_action, .swapchain = glfw_swapchain() });
sg_apply_pipeline(pip);
sg_apply_bindings(&bind);
sg_apply_uniforms(SG_SHADERSTAGE_VS, 0, &SG_RANGE(vs_params));
sg_draw(0, 36, 1);
sg_end_pass();
sg_commit();
glfwSwapBuffers(w);
glfwSwapBuffers(glfw_window());
glfwPollEvents();
frame_index++;
}
Expand Down
37 changes: 11 additions & 26 deletions glfw/blend-glfw.c
Original file line number Diff line number Diff line change
Expand Up @@ -9,8 +9,7 @@
#define SOKOL_GLCORE33
#include "sokol_gfx.h"
#include "sokol_log.h"
#define GLFW_INCLUDE_NONE
#include "GLFW/glfw3.h"
#include "glfw_glue.h"

typedef struct {
hmm_mat4 mvp;
Expand All @@ -24,24 +23,12 @@ enum { NUM_BLEND_FACTORS = 15 };
sg_pipeline pips[NUM_BLEND_FACTORS][NUM_BLEND_FACTORS];

int main() {
const int WIDTH = 800;
const int HEIGHT = 600;
const int MSAA_SAMPLES = 4;

// create GLFW window and initialize GL
glfwInit();
glfwWindowHint(GLFW_SAMPLES, MSAA_SAMPLES);
glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3);
glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 3);
glfwWindowHint(GLFW_OPENGL_FORWARD_COMPAT, GLFW_TRUE);
glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE);
GLFWwindow* w = glfwCreateWindow(WIDTH, HEIGHT, "Sokol Blend GLFW", 0, 0);
glfwMakeContextCurrent(w);
glfwSwapInterval(1);

glfw_init("blend-glfw.c", 800, 600, 4);
// setup sokol_gfx (need to increase pipeline pool size)
sg_desc desc = {
.pipeline_pool_size = NUM_BLEND_FACTORS * NUM_BLEND_FACTORS + 1,
.environment = glfw_environment(),
.logger.func = slog_func,
};
sg_setup(&desc);
Expand Down Expand Up @@ -156,22 +143,20 @@ int main() {
.stencil.load_action = SG_LOADACTION_DONTCARE
};

// view-projection matrix
hmm_mat4 proj = HMM_Perspective(90.0f, (float)WIDTH/(float)HEIGHT, 0.01f, 100.0f);
hmm_mat4 view = HMM_LookAt(HMM_Vec3(0.0f, 0.0f, 25.0f), HMM_Vec3(0.0f, 0.0f, 0.0f), HMM_Vec3(0.0f, 1.0f, 0.0f));
hmm_mat4 view_proj = HMM_MultiplyMat4(proj, view);

sg_bindings bind = {
.vertex_buffers[0] = vbuf
};
vs_params_t vs_params;
fs_params_t fs_params;
float r = 0.0f;
fs_params.tick = 0.0f;
while (!glfwWindowShouldClose(w)) {
int cur_width, cur_height;
glfwGetFramebufferSize(w, &cur_width, &cur_height);
sg_begin_default_pass(&pass_action, cur_width, cur_height);
while (!glfwWindowShouldClose(glfw_window())) {
// view-projection matrix
hmm_mat4 proj = HMM_Perspective(90.0f, (float)glfw_width()/(float)glfw_height(), 0.01f, 100.0f);
hmm_mat4 view = HMM_LookAt(HMM_Vec3(0.0f, 0.0f, 25.0f), HMM_Vec3(0.0f, 0.0f, 0.0f), HMM_Vec3(0.0f, 1.0f, 0.0f));
hmm_mat4 view_proj = HMM_MultiplyMat4(proj, view);

sg_begin_pass(&(sg_pass){ .action = pass_action, .swapchain = glfw_swapchain() });

// draw a background quad
sg_apply_pipeline(bg_pip);
Expand All @@ -198,7 +183,7 @@ int main() {
}
sg_end_pass();
sg_commit();
glfwSwapBuffers(w);
glfwSwapBuffers(glfw_window());
glfwPollEvents();
r += 0.6f;
fs_params.tick += 1.0f;
Expand Down
30 changes: 9 additions & 21 deletions glfw/bufferoffsets-glfw.c
Original file line number Diff line number Diff line change
Expand Up @@ -7,31 +7,21 @@
#define SOKOL_GLCORE33
#include "sokol_gfx.h"
#include "sokol_log.h"
#define GLFW_INCLUDE_NONE
#include "GLFW/glfw3.h"
#include "glfw_glue.h"

typedef struct {
float x, y, r, g, b;
} vertex_t;

int main() {
const int WIDTH = 640;
const int HEIGHT = 480;

// create GLFW window and initialize GL
glfwInit();
glfwWindowHint(GLFW_SAMPLES, 4);
glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 3);
glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 3);
glfwWindowHint(GLFW_OPENGL_FORWARD_COMPAT, GLFW_TRUE);
glfwWindowHint(GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE);
GLFWwindow* w = glfwCreateWindow(WIDTH, HEIGHT, "Sokol Buffer Offsets GLFW", 0, 0);
glfwMakeContextCurrent(w);
glfwSwapInterval(1);
glfw_init("bufferoffsets-glfw.c", 640, 480, 1);

// setup sokol_gfx
sg_desc desc = { .logger.func = slog_func };
sg_setup(&desc);
sg_setup(&(sg_desc){
.environment = glfw_environment(),
.logger.func = slog_func,
});
assert(sg_isvalid());

// a 2D triangle and quad in 1 vertex buffer and 1 index buffer
Expand Down Expand Up @@ -104,10 +94,8 @@ int main() {
}
};

while (!glfwWindowShouldClose(w)) {
int cur_width, cur_height;
glfwGetFramebufferSize(w, &cur_width, &cur_height);
sg_begin_default_pass(&pass_action, cur_width, cur_height);
while (!glfwWindowShouldClose(glfw_window())) {
sg_begin_pass(&(sg_pass){ .action = pass_action, .swapchain = glfw_swapchain() });
sg_apply_pipeline(pip);
// render the triangle
bind.vertex_buffer_offsets[0] = 0;
Expand All @@ -121,7 +109,7 @@ int main() {
sg_draw(0, 6, 1);
sg_end_pass();
sg_commit();
glfwSwapBuffers(w);
glfwSwapBuffers(glfw_window());
glfwPollEvents();
}
sg_shutdown();
Expand Down
Loading

0 comments on commit 4a99bf2

Please sign in to comment.