From 1939e2dff53ccf9584e69da9ac13f1692ad1f06a Mon Sep 17 00:00:00 2001 From: onezplpl Date: Fri, 19 Jul 2024 11:31:37 -0400 Subject: [PATCH] save position to file --- main.c | 33 +++++++++++++++++++++++---------- 1 file changed, 23 insertions(+), 10 deletions(-) diff --git a/main.c b/main.c index ea8174a..71c58ca 100644 --- a/main.c +++ b/main.c @@ -161,13 +161,15 @@ int main(void) { glGenBuffers(2, vertex_buffer); glBindBuffer(GL_ARRAY_BUFFER, vertex_buffer[1]); - glBufferData(GL_ARRAY_BUFFER, CTRI_ALL + UI_ALL* 18 * sizeof(struct v3f), textO, GL_STATIC_DRAW); + glBufferData(GL_ARRAY_BUFFER, CTRI_ALL + UI_ALL * 18 * sizeof(struct v3f), + textO, GL_STATIC_DRAW); glEnableVertexAttribArray(1); glVertexAttribPointer(1, 3, GL_FLOAT, GL_FALSE, sizeof(struct v3f), (void *)0); glBindBuffer(GL_ARRAY_BUFFER, vertex_buffer[0]); - glBufferData(GL_ARRAY_BUFFER, CTRI_ALL + UI_ALL * 18 * sizeof(struct v3f), cubeO, GL_STATIC_DRAW); + glBufferData(GL_ARRAY_BUFFER, CTRI_ALL + UI_ALL * 18 * sizeof(struct v3f), + cubeO, GL_STATIC_DRAW); glEnableVertexAttribArray(0); glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, sizeof(struct v3f), (void *)0); @@ -207,6 +209,9 @@ int main(void) { pos[1] = 48; pos[2] = 10240; + FILE *fp = fopen("./db/position.dat", "rb"); + int code = (fp) ? fread(&pos, sizeof(struct v3f), 1, fp) : 0; + int cube_count = cubes_vert(cube, text, cubeO, textO, pos[0] / CHUNK_LENGTH, pos[1] / CHUNK_LENGTH, pos[2] / CHUNK_LENGTH, 1, i2); @@ -330,8 +335,8 @@ int main(void) { glBindTexture(GL_TEXTURE_2D, GL_TEXTURE0); - glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, tx, ty, 0, GL_RGBA, GL_UNSIGNED_BYTE, - pixels); + glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, tx, ty, 0, GL_RGBA, + GL_UNSIGNED_BYTE, pixels); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); @@ -349,28 +354,36 @@ int main(void) { glUniform1i(use_shading, 0); int iz = CBLOCK_ALL * 18; - cubes_rect(cubeO, &iz, -0.5,0.5, -0.5, 0.5, 0, 0, 6); + cubes_rect(cubeO, &iz, -0.5, 0.5, -0.5, 0.5, 0, 0, 6); cubes_rect(textO, &iz, -0.5, 0.5, -0.5, 0.5, 1, 0, 6); mat4x4_identity(v); - mat4x4_ortho(p, -ratio*15, ratio*15, -1.f*15, 1.f*15, 1.0f, -1.0f); + mat4x4_ortho(p, -ratio * 15, ratio * 15, -1.f * 15, 1.f * 15, 1.0f, -1.0f); mat4x4_mul(mvp, p, v); mat4x4_mul(mvp, mvp, m); glUniformMatrix4fv(mvp_location, 1, GL_FALSE, (const GLfloat *)&mvp); glBindBuffer(GL_ARRAY_BUFFER, vertex_buffer[1]); - glBufferSubData(GL_ARRAY_BUFFER, CTRI_ALL, - (long)6 * sizeof(struct v3f), &textO[iz]); + glBufferSubData(GL_ARRAY_BUFFER, CTRI_ALL, (long)6 * sizeof(struct v3f), + &textO[iz]); glBindBuffer(GL_ARRAY_BUFFER, vertex_buffer[0]); - glBufferSubData(GL_ARRAY_BUFFER, CTRI_ALL, - (long)6 * sizeof(struct v3f), &cubeO[iz]); + glBufferSubData(GL_ARRAY_BUFFER, CTRI_ALL, (long)6 * sizeof(struct v3f), + &cubeO[iz]); glBindVertexArray(vertex_array); glDrawArrays(GL_TRIANGLES, CBLOCK_ALL * 18, 6); } + if (fp) { + fclose(fp); + } + fp = fopen("./db/position.dat", "wb"); + if (fp) { + fwrite(&pos, sizeof(struct v3f), 1, fp); + fclose(fp); + } free(cube); free(text); free(cubeO);