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

33
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);
@ -349,28 +354,36 @@ int main(void) {
glUniform1i(use_shading, 0); glUniform1i(use_shading, 0);
int iz = CBLOCK_ALL * 18; 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); cubes_rect(textO, &iz, -0.5, 0.5, -0.5, 0.5, 1, 0, 6);
mat4x4_identity(v); 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, p, v);
mat4x4_mul(mvp, mvp, m); mat4x4_mul(mvp, mvp, m);
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);