From 223b1056273f5d48d1c0bbfee75be7b82374d4eb Mon Sep 17 00:00:00 2001 From: pryazha Date: Sun, 12 Oct 2025 15:24:30 +0500 Subject: change identation, maybe will change back, add own gl functions loading, and glx example --- prbm.h | 205 +++++++++++++++++++++++++++++++++-------------------------------- 1 file changed, 103 insertions(+), 102 deletions(-) (limited to 'prbm.h') diff --git a/prbm.h b/prbm.h index f3932dd..a5432de 100644 --- a/prbm.h +++ b/prbm.h @@ -3,110 +3,111 @@ #include "types.h" -struct v2 { - f32 x; - f32 y; -}; - -struct v3 { - f32 x; - f32 y; - f32 z; -}; - -struct v4 { - f32 x; - f32 y; - f32 z; - f32 w; -}; - -// column-major -struct mat { - struct v4 c0; - struct v4 c1; - struct v4 c2; - struct v4 c3; -}; - -struct rect { - struct v2 start; - struct v2 end; -}; - -#define v2_zero (struct v2){ 0.0f, 0.0f} -#define v2_one (struct v2){ 1.0f, 1.0f} -#define v2_right (struct v2){ 1.0f, 0.0f} -#define v2_up (struct v2){ 0.0f, 1.0f} -#define v2_left (struct v2){-1.0f, 0.0f} -#define v2_down (struct v2){ 0.0f, -1.0f} - -#define v3_zero (struct v3){ 0.0f, 0.0f, 0.0f} -#define v3_one (struct v3){ 1.0f, 1.0f, 1.0f} -#define v3_right (struct v3){ 1.0f, 0.0f, 0.0f} -#define v3_up (struct v3){ 0.0f, 1.0f, 0.0f} -#define v3_left (struct v3){-1.0f, 0.0f, 0.0f} -#define v3_down (struct v3){ 0.0f, -1.0f, 0.0f} -#define v3_forward (struct v3){ 0.0f, 0.0f, 1.0f} -#define v3_backward (struct v3){ 0.0f, 0.0f, -1.0f} - -#define v4_zero (struct v4){0.0f, 0.0f, 0.0f, 0.0f} -#define v4_one (struct v4){1.0f, 1.0f, 1.0f, 1.0f} - -#define mat_identity (struct mat){ \ - {1.0f, 0.0f, 0.0f, 0.0f}, \ - {0.0f, 1.0f, 0.0f, 0.0f}, \ - {0.0f, 0.0f, 1.0f, 0.0f}, \ - {0.0f, 0.0f, 0.0f, 1.0f}} +#define v2_zero (v2){ 0.0f, 0.0f} +#define v2_one (v2){ 1.0f, 1.0f} +#define v2_right (v2){ 1.0f, 0.0f} +#define v2_up (v2){ 0.0f, 1.0f} +#define v2_left (v2){-1.0f, 0.0f} +#define v2_down (v2){ 0.0f, -1.0f} + +#define v3_zero (v3){ 0.0f, 0.0f, 0.0f} +#define v3_one (v3){ 1.0f, 1.0f, 1.0f} +#define v3_right (v3){ 1.0f, 0.0f, 0.0f} +#define v3_up (v3){ 0.0f, 1.0f, 0.0f} +#define v3_left (v3){-1.0f, 0.0f, 0.0f} +#define v3_down (v3){ 0.0f, -1.0f, 0.0f} +#define v3_forward (v3){ 0.0f, 0.0f, 1.0f} +#define v3_backward (v3){ 0.0f, 0.0f, -1.0f} + +#define v4_zero (v4){0.0f, 0.0f, 0.0f, 0.0f} +#define v4_one (v4){1.0f, 1.0f, 1.0f, 1.0f} + +#define mat_identity (mat){ \ + {1.0f, 0.0f, 0.0f, 0.0f}, \ + {0.0f, 1.0f, 0.0f, 0.0f}, \ + {0.0f, 0.0f, 1.0f, 0.0f}, \ + {0.0f, 0.0f, 0.0f, 1.0f}} #define f32pi 3.14159265359f -#define deg2rad(angle) (f32pi/180.0f*(angle)) - -struct v2 fillv2(f32 a); -struct v2 invv2(struct v2 a); -struct v2 addv2(struct v2 a, struct v2 b); -struct v2 subv2(struct v2 a, struct v2 b); -struct v2 scalev2(struct v2 a, f32 s); -struct v2 scalevv2(struct v2 a, struct v2 s); -f32 dotv2(struct v2 a, struct v2 b); -f32 len2v2(struct v2 a); -f32 lenv2(struct v2 a); -struct v2 normv2(struct v2 a); - -struct v3 fillv3(f32 a); -struct v3 invv3(struct v3 a); -struct v3 addv3(struct v3 a, struct v3 b); -struct v3 subv3(struct v3 a, struct v3 b); -struct v3 scalev3(struct v3 a, f32 s); -struct v3 scalevv3(struct v3 a, struct v3 s); -f32 dotv3(struct v3 a, struct v3 b); -struct v3 crossv3(struct v3 l, struct v3 r); -f32 len2v3(struct v3 a); -f32 lenv3(struct v3 a); -struct v3 normv3(struct v3 a); - -struct v4 fillv4(f32 a); -struct v4 invv4(struct v4 a); -struct v4 addv4(struct v4 a, struct v4 b); -struct v4 subv4(struct v4 a, struct v4 b); -struct v4 scalev4(struct v4 a, f32 s); -struct v4 scalevv4(struct v4 a, struct v4 s); -f32 dotv4(struct v4 a, struct v4 b); -f32 len2v4(struct v4 a); -f32 lenv4(struct v4 a); -struct v4 normv4(struct v4 a); - -struct mat transpmat(struct mat m); -struct mat mulmat(struct mat left, struct mat right); -struct mat make_translate(struct v3 v); -struct mat make_scale(struct v3 v); -struct mat make_rotate(struct v3 x, struct v3 y, struct v3 z); -struct mat translate_mat(struct mat m, struct v3 v); -struct mat scale_mat(struct mat m, struct v3 v); -struct mat rotate_mat(struct mat m, struct v3 angles); -struct v4 mulmatv4(struct mat m, struct v4 v); - -i32 in_rect(struct v2 pos, struct rect rect); +#define deg2rad(angle) (f32pi/180.0f*(angle)) + +typedef struct { + f32 x; + f32 y; +} v2; + +typedef struct { + f32 x; + f32 y; + f32 z; +} v3; + +typedef struct { + f32 x; + f32 y; + f32 z; + f32 w; +} v4; + +// column-major +typedef struct { + v4 c0; + v4 c1; + v4 c2; + v4 c3; +} mat; + +typedef struct { + v2 start; + v2 end; +} rect; + +v2 fillv2(f32 a); +v2 invv2(v2 a); +v2 addv2(v2 a, v2 b); +v2 subv2(v2 a, v2 b); +v2 scalev2(v2 a, f32 s); +v2 scalevv2(v2 a, v2 s); +f32 dotv2(v2 a, v2 b); +f32 len2v2(v2 a); +f32 lenv2(v2 a); +v2 normv2(v2 a); + +v3 fillv3(f32 a); +v3 invv3(v3 a); +v3 addv3(v3 a, v3 b); +v3 subv3(v3 a, v3 b); +v3 scalev3(v3 a, f32 s); +v3 scalevv3(v3 a, v3 s); +f32 dotv3(v3 a, v3 b); +v3 crossv3(v3 l, v3 r); +f32 len2v3(v3 a); +f32 lenv3(v3 a); +v3 normv3(v3 a); +v3 maxv3(v3 a, v3 b); + +v4 fillv4(f32 a); +v4 invv4(v4 a); +v4 addv4(v4 a, v4 b); +v4 subv4(v4 a, v4 b); +v4 scalev4(v4 a, f32 s); +v4 scalevv4(v4 a, v4 s); +f32 dotv4(v4 a, v4 b); +f32 len2v4(v4 a); +f32 lenv4(v4 a); +v4 normv4(v4 a); + +mat transpose_mat(mat m); +mat mulmat(mat left, mat right); +mat make_translate(v3 v); +mat make_scale(v3 v); +mat make_rotate(v3 x, v3 y, v3 z); +mat translate_mat(mat m, v3 v); +mat scale_mat(mat m, v3 v); +mat rotate_mat(mat m, v3 angles); +v4 mulmatv4(mat m, v4 v); + +i32 in_rect(v2 pos, rect r); #endif -- cgit v1.2.3-70-g09d2