Framebuffer for maze
This commit is contained in:
parent
b5f0f9119d
commit
171fde56a7
2
haloo3d
2
haloo3d
@ -1 +1 @@
|
|||||||
Subproject commit cca7ec456909732e051a00aef5319dd452955299
|
Subproject commit 11f20ce5e2b3053ce777151928500be797f3893f
|
70
maze.c
70
maze.c
@ -15,11 +15,13 @@
|
|||||||
// #define FASTTRIS
|
// #define FASTTRIS
|
||||||
#define DITHERSTART -1
|
#define DITHERSTART -1
|
||||||
#define DITHEREND 8
|
#define DITHEREND 8
|
||||||
#define TARGETFPS 60
|
#define TARGETFPS 30
|
||||||
#define SECPERFRAME (1.0 / TARGETFPS)
|
#define SECPERFRAME (1.0 / TARGETFPS)
|
||||||
|
|
||||||
#define WIDTH 640
|
#define WIDTH 320
|
||||||
#define HEIGHT 480
|
#define HEIGHT 200
|
||||||
|
#define SWIDTH WIDTH * 3
|
||||||
|
#define SHEIGHT HEIGHT * 3
|
||||||
#define ASPECT ((float)WIDTH / HEIGHT)
|
#define ASPECT ((float)WIDTH / HEIGHT)
|
||||||
#define FOV 90.0
|
#define FOV 90.0
|
||||||
#define NEARCLIP 0.01
|
#define NEARCLIP 0.01
|
||||||
@ -30,12 +32,18 @@
|
|||||||
|
|
||||||
// Game options
|
// Game options
|
||||||
#define MAZESIZE 31
|
#define MAZESIZE 31
|
||||||
|
#define HSCALE 2.0
|
||||||
|
|
||||||
int main() { // int argc, char **argv) {
|
int main() { // int argc, char **argv) {
|
||||||
|
|
||||||
haloo3d_easystore storage;
|
haloo3d_easystore storage;
|
||||||
haloo3d_easystore_init(&storage);
|
haloo3d_easystore_init(&storage);
|
||||||
|
|
||||||
|
haloo3d_fb screen;
|
||||||
|
haloo3d_fb_init(&screen, SWIDTH, SHEIGHT);
|
||||||
|
haloo3d_recti texrect = {.x1 = 0, .y1 = 0, .x2 = WIDTH, .y2 = HEIGHT};
|
||||||
|
haloo3d_recti screenrect = {.x1 = 0, .y1 = 0, .x2 = SWIDTH, .y2 = SHEIGHT};
|
||||||
|
|
||||||
haloo3d_easyrender render;
|
haloo3d_easyrender render;
|
||||||
haloo3d_easyrender_init(&render, WIDTH, HEIGHT);
|
haloo3d_easyrender_init(&render, WIDTH, HEIGHT);
|
||||||
haloo3d_perspective(render.perspective, FOV, ASPECT, NEARCLIP, FARCLIP);
|
haloo3d_perspective(render.perspective, FOV, ASPECT, NEARCLIP, FARCLIP);
|
||||||
@ -45,6 +53,8 @@ int main() { // int argc, char **argv) {
|
|||||||
#endif
|
#endif
|
||||||
eprintf("Initialized renderer\n");
|
eprintf("Initialized renderer\n");
|
||||||
|
|
||||||
|
render.tprint.fb = &screen;
|
||||||
|
|
||||||
haloo3d_easytimer frametimer, sdltimer;
|
haloo3d_easytimer frametimer, sdltimer;
|
||||||
haloo3d_easytimer_init(&frametimer, AVGWEIGHT);
|
haloo3d_easytimer_init(&frametimer, AVGWEIGHT);
|
||||||
haloo3d_easytimer_init(&sdltimer, AVGWEIGHT);
|
haloo3d_easytimer_init(&sdltimer, AVGWEIGHT);
|
||||||
@ -52,13 +62,29 @@ int main() { // int argc, char **argv) {
|
|||||||
// Load the junk + generate stuff
|
// Load the junk + generate stuff
|
||||||
haloo3d_obj *flooro = haloo3d_easystore_addobj(&storage, "floor");
|
haloo3d_obj *flooro = haloo3d_easystore_addobj(&storage, "floor");
|
||||||
haloo3d_obj *ceilo = haloo3d_easystore_addobj(&storage, "ceiling");
|
haloo3d_obj *ceilo = haloo3d_easystore_addobj(&storage, "ceiling");
|
||||||
|
haloo3d_obj *wallo = haloo3d_easystore_addobj(&storage, "walls");
|
||||||
haloo3d_fb *floort = haloo3d_easystore_addtex(&storage, "floor");
|
haloo3d_fb *floort = haloo3d_easystore_addtex(&storage, "floor");
|
||||||
haloo3d_fb *ceilt = haloo3d_easystore_addtex(&storage, "ceiling");
|
haloo3d_fb *ceilt = haloo3d_easystore_addtex(&storage, "ceiling");
|
||||||
|
haloo3d_fb *wallt = haloo3d_easystore_addtex(&storage, "walls");
|
||||||
haloo3d_gen_plane(flooro, MAZESIZE);
|
haloo3d_gen_plane(flooro, MAZESIZE);
|
||||||
haloo3d_gen_plane(ceilo, MAZESIZE);
|
haloo3d_gen_plane(ceilo, MAZESIZE);
|
||||||
|
haloo3d_gen_grid(wallo, MAZESIZE);
|
||||||
|
|
||||||
uint16_t cols[4] = {0xFD93, 0xFB83, 0xFEEE, 0xFDDD};
|
uint16_t cols[4] = {0xFD93, 0xFB83, 0xFEEE, 0xFDDD};
|
||||||
haloo3d_gen_checkerboard(floort, cols, 2, 32);
|
haloo3d_fb_init_tex(floort, 64, 64);
|
||||||
haloo3d_gen_checkerboard(ceilt, cols + 2, 2, 32);
|
haloo3d_apply_alternating(floort, cols, 1);
|
||||||
|
haloo3d_apply_noise(floort, NULL, 1.0 / 6);
|
||||||
|
// haloo3d_apply_alternating(floort, cols, 2);
|
||||||
|
haloo3d_fb_init_tex(ceilt, 16, 16);
|
||||||
|
haloo3d_apply_alternating(ceilt, cols + 2, 2);
|
||||||
|
|
||||||
|
haloo3d_fb_init_tex(wallt, 64, 64);
|
||||||
|
uint16_t wallcols[] = {0xFA22};
|
||||||
|
haloo3d_apply_alternating(wallt, wallcols, 1);
|
||||||
|
haloo3d_apply_noise(wallt, NULL, 1.0 / 8);
|
||||||
|
haloo3d_apply_brick(wallt, 16, 11, 0xFEEE);
|
||||||
|
// haloo3d_apply_brick(wallt, 14, 8, 0xFD94);
|
||||||
|
haloo3d_apply_noise(wallt, NULL, 1.0 / 8);
|
||||||
eprintf("Initialized models and textures\n");
|
eprintf("Initialized models and textures\n");
|
||||||
|
|
||||||
// Lighting. Note that for performance, the lighting is always calculated
|
// Lighting. Note that for performance, the lighting is always calculated
|
||||||
@ -71,17 +97,23 @@ int main() { // int argc, char **argv) {
|
|||||||
|
|
||||||
haloo3d_obj_instance *floori =
|
haloo3d_obj_instance *floori =
|
||||||
haloo3d_easyrender_addinstance(&render, flooro, floort);
|
haloo3d_easyrender_addinstance(&render, flooro, floort);
|
||||||
|
haloo3d_obj_instance *walli =
|
||||||
|
haloo3d_easyrender_addinstance(&render, wallo, wallt);
|
||||||
haloo3d_obj_instance *ceili =
|
haloo3d_obj_instance *ceili =
|
||||||
haloo3d_easyrender_addinstance(&render, ceilo, ceilt);
|
haloo3d_easyrender_addinstance(&render, ceilo, ceilt);
|
||||||
floori->cullbackface = 0;
|
floori->cullbackface = 0;
|
||||||
ceili->cullbackface = 0;
|
ceili->cullbackface = 0;
|
||||||
|
walli->cullbackface = 0;
|
||||||
|
vec3(floori->scale.v, HSCALE, 1, HSCALE);
|
||||||
|
vec3(ceili->scale.v, HSCALE, 1, HSCALE);
|
||||||
|
vec3(walli->scale.v, HSCALE, 0, HSCALE);
|
||||||
ceili->pos.y = 1;
|
ceili->pos.y = 1;
|
||||||
eprintf("Setup all object instances\n");
|
eprintf("Setup all object instances\n");
|
||||||
|
|
||||||
unigi_type_event event;
|
unigi_type_event event;
|
||||||
unigi_type_resolution res;
|
unigi_type_resolution res;
|
||||||
res.width = WIDTH;
|
res.width = SWIDTH;
|
||||||
res.height = HEIGHT;
|
res.height = SHEIGHT;
|
||||||
res.depth = 0;
|
res.depth = 0;
|
||||||
|
|
||||||
int totaldrawn = 0;
|
int totaldrawn = 0;
|
||||||
@ -98,12 +130,26 @@ int main() { // int argc, char **argv) {
|
|||||||
// Actual rendering
|
// Actual rendering
|
||||||
// -----------------------------------
|
// -----------------------------------
|
||||||
|
|
||||||
|
// ceili->texture = &render.window;
|
||||||
|
|
||||||
while (1) {
|
while (1) {
|
||||||
haloo3d_easytimer_start(&frametimer);
|
haloo3d_easytimer_start(&frametimer);
|
||||||
render.camera.yaw += 0.005;
|
render.camera.yaw += 0.008;
|
||||||
haloo3d_easyrender_beginframe(&render);
|
haloo3d_easyrender_beginframe(&render);
|
||||||
memset(render.window.buffer, 0,
|
haloo3d_fb_clear(&render.window, 0xF000);
|
||||||
sizeof(uint16_t) * render.window.width * render.window.height);
|
// memset(render.window.buffer, 0,
|
||||||
|
// sizeof(uint16_t) * render.window.width * render.window.height);
|
||||||
|
|
||||||
|
// for (int j = 0; j < 100; j++) {
|
||||||
|
// ceilt->buffer[rand() % (ceilt->width * ceilt->height)] =
|
||||||
|
// 0xF000 | (rand() & 0xFFF);
|
||||||
|
// }
|
||||||
|
|
||||||
|
walli->scale.y = fabs(sin(3 * render.camera.yaw));
|
||||||
|
// render.camera.up.x = sin(render.camera.yaw);
|
||||||
|
// render.camera.up.y = cos(render.camera.yaw);
|
||||||
|
// walli->up.x = sin(3 * render.camera.yaw);
|
||||||
|
// walli->up.y = cos(4 * render.camera.yaw);
|
||||||
|
|
||||||
unigi_event_get(&event);
|
unigi_event_get(&event);
|
||||||
if (event.type == unigi_enum_event_input_keyboard) {
|
if (event.type == unigi_enum_event_input_keyboard) {
|
||||||
@ -126,6 +172,8 @@ int main() { // int argc, char **argv) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
haloo3d_sprite(&screen, &render.window, texrect, screenrect);
|
||||||
|
|
||||||
haloo3d_print(&render.tprint,
|
haloo3d_print(&render.tprint,
|
||||||
"Last frame: %05.2f (%05.2f)\nLast SDLFl: %05.2f "
|
"Last frame: %05.2f (%05.2f)\nLast SDLFl: %05.2f "
|
||||||
"(%05.2f)\nTris: %d / %d\nVerts: %d\n",
|
"(%05.2f)\nTris: %d / %d\nVerts: %d\n",
|
||||||
@ -133,7 +181,7 @@ int main() { // int argc, char **argv) {
|
|||||||
sdltimer.last * 1000, sdltimer.sum * 1000, totaldrawn,
|
sdltimer.last * 1000, sdltimer.sum * 1000, totaldrawn,
|
||||||
render.totalfaces, render.totalverts);
|
render.totalfaces, render.totalverts);
|
||||||
|
|
||||||
unigi_graphics_blit(0, (unigi_type_color *)render.window.buffer,
|
unigi_graphics_blit(0, (unigi_type_color *)screen.buffer,
|
||||||
res.width * res.height);
|
res.width * res.height);
|
||||||
|
|
||||||
haloo3d_easytimer_start(&sdltimer);
|
haloo3d_easytimer_start(&sdltimer);
|
||||||
|
Loading…
Reference in New Issue
Block a user