diff options
| author | Charles <sircharlesaze@gmail.com> | 2020-01-17 14:51:23 +0100 |
|---|---|---|
| committer | Charles <sircharlesaze@gmail.com> | 2020-01-17 14:51:23 +0100 |
| commit | a05a68ed6d868d17827159e5df16069a649d2263 (patch) | |
| tree | 338058411cea5b514c13390d845f7577bca70199 /render.c | |
| parent | 75c7e5548de908c37c0fbdd49df50f3e7447e120 (diff) | |
| download | cub3d-a05a68ed6d868d17827159e5df16069a649d2263.tar.gz cub3d-a05a68ed6d868d17827159e5df16069a649d2263.tar.bz2 cub3d-a05a68ed6d868d17827159e5df16069a649d2263.zip | |
No more segfault (for now), raycasting is broken
Diffstat (limited to 'render.c')
| -rw-r--r-- | render.c | 51 |
1 files changed, 36 insertions, 15 deletions
@@ -5,15 +5,25 @@ /* +:+ +:+ +:+ */ /* By: cacharle <marvin@42.fr> +#+ +:+ +#+ */ /* +#+#+#+#+#+ +#+ */ +/* Created: 2020/01/17 14:25:49 by cacharle #+# #+# */ +/* Updated: 2020/01/17 14:50:20 by cacharle ### ########.fr */ +/* */ +/* ************************************************************************** */ + +/* ************************************************************************** */ +/* */ +/* ::: :::::::: */ +/* render.c :+: :+: :+: */ +/* +:+ +:+ +:+ */ +/* By: cacharle <marvin@42.fr> +#+ +:+ +#+ */ +/* +#+#+#+#+#+ +#+ */ /* Created: 2020/01/11 13:37:17 by cacharle #+# #+# */ -/* Updated: 2020/01/16 10:06:04 by cacharle ### ########.fr */ +/* Updated: 2020/01/17 14:25:04 by cacharle ### ########.fr */ /* */ /* ************************************************************************** */ #include "cub3d.h" -#define WINDOW_MID_HEIGHT(state) (state->window.height / 2) - int render_update(void *param) { t_state *state; @@ -24,6 +34,7 @@ int render_update(void *param) state_destroy(state); exit(EXIT_SUCCESS); } + /* ft_bzero(state->window.data, state->window.width * state->window.height * 4); */ render_update_window(state); mlx_put_image_to_window(state->mlx_ptr, state->window_ptr, state->window.id, 0, 0); return (0); @@ -60,7 +71,7 @@ void render_column(t_state *state, int x) /* printf("map_step [%f %f]\n", rstate.map_step.x, rstate.map_step.y); */ while (TRUE) { - rstate.side = rstate.probe.x < rstate.probe.y ? SIDE_WE : SIDE_WE; + rstate.side = rstate.probe.x < rstate.probe.y ? SIDE_WE : SIDE_NS; /* printf("side %s\n", rstate.side == SIDE_WE ? "side we" : "side ns"); */ rstate_next_probe(&rstate); /* printf("2\n"); */ @@ -72,10 +83,18 @@ void render_column(t_state *state, int x) /* printf("[%d %d]\n", (int)rstate.map_pos.x, (int)rstate.map_pos.y); */ rstate_line_height(state, &rstate); /* printf("perp dist %f\n", rstate_perp_dist(state, &rstate)); */ - printf("line height %d\n", rstate.line_height); - rstate.draw_start = WINDOW_MID_HEIGHT(state) - rstate.line_height / 2; - rstate.draw_end = WINDOW_MID_HEIGHT(state) + rstate.line_height / 2; - printf("%d -> %d\n", rstate.draw_start, rstate.draw_end); + /* printf("line height %d\n", rstate.line_height); */ + + + rstate.draw_start = state->window.height / 2 - rstate.line_height / 2; + rstate.draw_end = state->window.height / 2 + rstate.line_height / 2; + if (rstate.draw_start < 0) + rstate.draw_start = 0; + if (rstate.draw_end > state->window.height - 1) + rstate.draw_end = state->window.height - 1; + /* printf("%d -> %d\n", rstate.draw_start, rstate.draw_end); */ + /* rstate.draw_start = 10; */ + /* rstate.draw_end = 20; */ render_window_column(state, &rstate); } @@ -87,13 +106,15 @@ void render_window_column(t_state *state, t_render_state *rstate) white.hexcode = 0x00ffffff; black.hexcode = 0x00000000; - i = -1; - while (++i < rstate->draw_start) - ((t_color*)state->window.data)[i * state->window.width + rstate->x] = black; - while (++i < rstate->draw_end) - ((t_color*)state->window.data)[i * state->window.width + rstate->x] = white; - while (++i < state->window_height) - ((t_color*)state->window.data)[i * state->window.width + rstate->x] = black; + i = 0; + /* printf("%p\n", state->window.data); */ + while (i < rstate->draw_start) + ((t_color*)state->window.data)[i++ * state->window.width + rstate->x] = black; + /* i = rstate->draw_start - 1; */ + while (i < rstate->draw_end) + ((t_color*)state->window.data)[i++ * state->window.width + rstate->x] = white; + while (i < state->window_height) + ((t_color*)state->window.data)[i++ * state->window.width + rstate->x] = black; /* printf("%d -> %d\n", rstate->draw_start, rstate->draw_end); */ /* while (++i < rstate->draw_start) */ |
