diff --git a/demos/dots3d.c b/demos/dots3d.c index a240fac..d74eac0 100644 --- a/demos/dots3d.c +++ b/demos/dots3d.c @@ -1,3 +1,4 @@ +#define VC_TRUECOLOR #include "vc.c" float sqrtf(float x); diff --git a/demos/model3d.c b/demos/model3d.c index 01e5fbc..8260675 100644 --- a/demos/model3d.c +++ b/demos/model3d.c @@ -1,3 +1,4 @@ +#define VC_TRUECOLOR #include "vc.c" #define WIDTH 960 diff --git a/demos/squish.c b/demos/squish.c index 27ba837..318ddbb 100644 --- a/demos/squish.c +++ b/demos/squish.c @@ -1,3 +1,4 @@ +#define VC_TRUECOLOR #include "vc.c" #include "./assets/tsodinPog.c" diff --git a/demos/triangle.c b/demos/triangle.c index 63bc448..5a69439 100644 --- a/demos/triangle.c +++ b/demos/triangle.c @@ -1,3 +1,4 @@ +#define VC_TRUECOLOR #include "vc.c" #define WIDTH 960 diff --git a/demos/triangle3d.c b/demos/triangle3d.c index 921e7b3..22a6ca7 100644 --- a/demos/triangle3d.c +++ b/demos/triangle3d.c @@ -1,3 +1,4 @@ +#define VC_TRUECOLOR #include "vc.c" #define WIDTH 960 diff --git a/demos/triangle3dTex.c b/demos/triangle3dTex.c index e63d5bd..50a9661 100644 --- a/demos/triangle3dTex.c +++ b/demos/triangle3dTex.c @@ -1,4 +1,5 @@ #define VC_TERM_SCALE_DOWN_FACTOR 10 +#define VC_TRUECOLOR #include "vc.c" #include "./assets/tsodinPog.c" #include "./assets/oldstone.c" diff --git a/demos/triangleTex.c b/demos/triangleTex.c index b6660e6..6ba76ed 100644 --- a/demos/triangleTex.c +++ b/demos/triangleTex.c @@ -1,3 +1,4 @@ +#define VC_TRUECOLOR #include "vc.c" #include "assets/tsodinPog.c" diff --git a/demos/vc.c b/demos/vc.c index 405ec9e..4002914 100644 --- a/demos/vc.c +++ b/demos/vc.c @@ -6,6 +6,7 @@ // // vc.c expectes render() to be defined and also supplies it's own entry point // // if needed (some platforms like WASM_PLATFORM do not have the main() // // entry point) +// add #define VC_TRUECOLOR for truecolor support // #include "vc.c" // // #define WIDTH 800 @@ -531,19 +532,28 @@ static void vc_term_compress_pixels(Olivec_Canvas oc) int g = OLIVEC_GREEN(cp); int b = OLIVEC_BLUE(cp); int a = OLIVEC_ALPHA(cp); + #ifndef VC_TRUECOLOR r = a*r/255; g = a*g/255; b = a*b/255; int h, s, l; rgb_to_hsl(r, g, b, &h, &s, &l); vc_term_char_canvas[y*vc_term_scaled_down_width + x] = find_ansi_index_by_hsl(h, s, l); + #else + printf("\033[48;2;%d;%d;%dm ", r, g, b); + #endif } + #ifdef VC_TRUECOLOR + printf("\033[0m\n"); + #endif } } int main(void) { for (;;) { + + #ifndef VC_TRUECOLOR vc_term_compress_pixels(vc_render(1.f/60.f)); for (size_t y = 0; y < vc_term_scaled_down_height; ++y) { for (size_t x = 0; x < vc_term_scaled_down_width; ++x) { @@ -552,6 +562,9 @@ int main(void) } printf("\033[0m\n"); } + #else + vc_term_compress_pixels(vc_render(1.f/60.f)); + #endif usleep(1000*1000/60); printf("\033[%zuA", vc_term_scaled_down_height);