WIP: Rotations in R4, and change colors
This commit is contained in:
59
src/main.c
59
src/main.c
@@ -12,18 +12,22 @@
|
||||
#include <emscripten.h>
|
||||
#endif
|
||||
|
||||
#ifndef M_PI
|
||||
#define M_PI 3.14159
|
||||
#endif
|
||||
|
||||
float *generate_data_surface(unsigned int, unsigned char *);
|
||||
float *generate_normals_surface(float *, unsigned char);
|
||||
|
||||
const char *wname = "manigraph: manifold grapher";
|
||||
struct projection projection = {.x = 3, .y=1, .z=2, .w=0 };
|
||||
|
||||
struct projection projection = {.x = 0, .y = 1, .z = 2, .w = 3};
|
||||
const char *wname = "manigraph: manifold grapher";
|
||||
|
||||
unsigned char palette[][4] = {
|
||||
{0xEB, 0xD3, 0xF8, 0xff},
|
||||
{0xEB, 0xD4, 0xF8, 0xff},
|
||||
{0xEB, 0xD5, 0xF8, 0xff},
|
||||
{0x7A, 0x1C, 0xAC, 0xff},
|
||||
{0x2F, 0x3C, 0x7E, 0xff},
|
||||
};
|
||||
|
||||
void mlog(char *msg)
|
||||
@@ -37,6 +41,8 @@ window_t window;
|
||||
mesh_t m_surface, m_axis;
|
||||
id_t shader, shader_plain;
|
||||
|
||||
extern volatile unsigned char animate_index;
|
||||
|
||||
#ifndef EMSCRIPTEN
|
||||
static inline
|
||||
#endif
|
||||
@@ -45,23 +51,48 @@ void main_loop(void)
|
||||
quat_t q;
|
||||
|
||||
q = poll_input(window);
|
||||
|
||||
load_rot_matrix(shader, q);
|
||||
load_rot_matrix(shader_plain, q);
|
||||
|
||||
{
|
||||
static float angle = 0;
|
||||
|
||||
|
||||
if( animate_index )
|
||||
{
|
||||
angle+=0.01;
|
||||
|
||||
load_uint_to_shader( shader, "i", animate_index-1 );
|
||||
load_uint_to_shader( shader_plain, "i", animate_index-1 );
|
||||
load_float_to_shader( shader, "angle", angle);
|
||||
load_float_to_shader( shader_plain, "angle", angle);
|
||||
}
|
||||
|
||||
if( angle > M_PI/2 && angle )
|
||||
{
|
||||
animate_index=0;
|
||||
angle = 0;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
clean_context();
|
||||
|
||||
#ifndef DEBUG
|
||||
load_mdl_matrix(shader_plain, 0, 0);
|
||||
draw_mesh(m_axis);
|
||||
draw_mesh(m_axis, 1);
|
||||
load_mdl_matrix(shader_plain, 1, 1);
|
||||
draw_mesh(m_axis);
|
||||
draw_mesh(m_axis, 1);
|
||||
load_mdl_matrix(shader_plain, 2, 2);
|
||||
draw_mesh(m_axis);
|
||||
load_mdl_matrix(shader, 0, 3);
|
||||
#else
|
||||
load_mdl_matrix(shader_plain, 0, 3);
|
||||
draw_mesh(m_axis, 1);
|
||||
#endif
|
||||
draw_mesh(m_surface);
|
||||
load_mdl_matrix(shader, 0, 3);
|
||||
draw_mesh(m_surface,0);
|
||||
|
||||
load_mdl_matrix(shader_plain, 0, 3);
|
||||
draw_mesh(m_surface,1);
|
||||
|
||||
}
|
||||
|
||||
int main(void)
|
||||
@@ -86,7 +117,7 @@ int main(void)
|
||||
mlog("[CONTEXT] Error al inicializar...\n");
|
||||
goto error_context;
|
||||
}
|
||||
set_clean_color_context(0x2E, 0x07, 0x3F);
|
||||
set_clean_color_context(0xFB, 0xEA, 0xEB);
|
||||
}
|
||||
|
||||
mlog("[TEXTURE] Inicializando...\n");
|
||||
@@ -126,16 +157,18 @@ int main(void)
|
||||
d_surface = generate_data_surface(16, &m);
|
||||
n_surface = generate_normals_surface(d_surface, m);
|
||||
|
||||
projection.m = m;
|
||||
|
||||
if (!(m_surface = create_mesh(d_surface, n_surface, m)))
|
||||
{
|
||||
mlog("[MESH] Error al inicializar...\n");
|
||||
goto error_mesh_surface;
|
||||
}
|
||||
|
||||
projection.m = m;
|
||||
projection.mesh = m_surface;
|
||||
|
||||
set_projection_mesh( projection );
|
||||
|
||||
|
||||
free(n_surface);
|
||||
free(d_surface);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user