save position to file

This commit is contained in:
onezplpl 2024-07-19 11:31:37 -04:00
parent 2c3b354e41
commit 1939e2dff5
No known key found for this signature in database
GPG key ID: 7EC026A136F9EEC3

29
main.c
View file

@ -161,13 +161,15 @@ int main(void) {
glGenBuffers(2, vertex_buffer); glGenBuffers(2, vertex_buffer);
glBindBuffer(GL_ARRAY_BUFFER, vertex_buffer[1]); 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); glEnableVertexAttribArray(1);
glVertexAttribPointer(1, 3, GL_FLOAT, GL_FALSE, sizeof(struct v3f), glVertexAttribPointer(1, 3, GL_FLOAT, GL_FALSE, sizeof(struct v3f),
(void *)0); (void *)0);
glBindBuffer(GL_ARRAY_BUFFER, vertex_buffer[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); glEnableVertexAttribArray(0);
glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, sizeof(struct v3f), glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, sizeof(struct v3f),
(void *)0); (void *)0);
@ -207,6 +209,9 @@ int main(void) {
pos[1] = 48; pos[1] = 48;
pos[2] = 10240; pos[2] = 10240;
FILE *fp = fopen("./db/position.dat", "rb");
int code = (fp) ? fread(&pos, sizeof(struct v3f), 1, fp) : 0;
int cube_count = int cube_count =
cubes_vert(cube, text, cubeO, textO, pos[0] / CHUNK_LENGTH, cubes_vert(cube, text, cubeO, textO, pos[0] / CHUNK_LENGTH,
pos[1] / CHUNK_LENGTH, pos[2] / CHUNK_LENGTH, 1, i2); pos[1] / CHUNK_LENGTH, pos[2] / CHUNK_LENGTH, 1, i2);
@ -330,8 +335,8 @@ int main(void) {
glBindTexture(GL_TEXTURE_2D, GL_TEXTURE0); glBindTexture(GL_TEXTURE_2D, GL_TEXTURE0);
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, tx, ty, 0, GL_RGBA, GL_UNSIGNED_BYTE, glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, tx, ty, 0, GL_RGBA,
pixels); GL_UNSIGNED_BYTE, pixels);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST); glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
@ -360,17 +365,25 @@ int main(void) {
glUniformMatrix4fv(mvp_location, 1, GL_FALSE, (const GLfloat *)&mvp); glUniformMatrix4fv(mvp_location, 1, GL_FALSE, (const GLfloat *)&mvp);
glBindBuffer(GL_ARRAY_BUFFER, vertex_buffer[1]); glBindBuffer(GL_ARRAY_BUFFER, vertex_buffer[1]);
glBufferSubData(GL_ARRAY_BUFFER, CTRI_ALL, glBufferSubData(GL_ARRAY_BUFFER, CTRI_ALL, (long)6 * sizeof(struct v3f),
(long)6 * sizeof(struct v3f), &textO[iz]); &textO[iz]);
glBindBuffer(GL_ARRAY_BUFFER, vertex_buffer[0]); glBindBuffer(GL_ARRAY_BUFFER, vertex_buffer[0]);
glBufferSubData(GL_ARRAY_BUFFER, CTRI_ALL, glBufferSubData(GL_ARRAY_BUFFER, CTRI_ALL, (long)6 * sizeof(struct v3f),
(long)6 * sizeof(struct v3f), &cubeO[iz]); &cubeO[iz]);
glBindVertexArray(vertex_array); glBindVertexArray(vertex_array);
glDrawArrays(GL_TRIANGLES, CBLOCK_ALL * 18, 6); 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(cube);
free(text); free(text);
free(cubeO); free(cubeO);