int loop_hook(void *data) { t_env *env; env = (t_env*)data; context_init(env); glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); //world_add_chunk(env->world, chunk_create(env->world, 16, 0)); glColor3f(0,0,0); glBegin(GL_QUADS); glVertex3f(-1, 1, 10); glVertex3f(1, 1, 10); glVertex3f(1, -1, 10); glVertex3f(-1, -1, 10); glEnd(); GL_ERROR(); world_render(env->world); mlx_opengl_swap_buffers(env->window->mlx_window); return (0); }
void test() { printf("Generating map.\n"); map* m = generate_random_map(10, 10, 1, NULL, NULL, NULL); world* w = world_new(m); w->f = fauna_generate(m, 1); char* output; // set random statuses for ( fauna* f = w->f; f != NULL; f = f->next ) { f->ws = wander_status_random(); } // run at 1hz do { output = world_render(w); printf("\e[1;1H\e[2J"); puts(output); printf("\n"); for ( fauna* f = w->f; f != NULL; f = f->next ) { wander_basic(w->m, f->ws, f); } sleep(1); } while ( true ); free(output); printf("Freeing world.\n"); world_free(w); }
void state_game_render() { static uint32_t oneseccond = 0; oneseccond += dt; static int frame = 0; frame++; if(oneseccond >= 1000) { static char buffer[32]; snprintf(buffer, 32, "%ifps", frame); textbox_set_txt(textbox_fps, buffer); oneseccond -= 1000; /*GLint total_mem_kb = 0; glGetIntegerv(GL_GPU_MEM_INFO_TOTAL_AVAILABLE_MEM_NVX, &total_mem_kb); GLint cur_avail_mem_kb = 0; glGetIntegerv(GL_GPU_MEM_INFO_CURRENT_AVAILABLE_MEM_NVX, &cur_avail_mem_kb); GLint cur_evicted_mem_kb = 0; glGetIntegerv(GPU_MEMORY_INFO_EVICTED_MEMORY_NVX, &cur_evicted_mem_kb); printf("MEM AVAIL: %i\t /%imb\n", cur_avail_mem_kb/1000, total_mem_kb/1000); printf(" %imb evicted\n", cur_evicted_mem_kb/1000); printf("%li triangles\n", world_get_trianglecount());*/ frame=0; } vec3_t forward = { forwardcamera.x, forwardcamera.y + PLAYER_EYEHEIGHT, forwardcamera.z, }; mat4_t projection = getprojectionmatrix(90, (float)windoww / (float)windowh, 3000, .1); mat4_t view = getviewmatrix(height, forward, up); mat4_t vp; dotmat4mat4(&vp, &projection, &view); //render to framebuffer here if(pp) glBindFramebuffer(GL_FRAMEBUFFER, renderbuffer.framebuffer); glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); if(lines) glPolygonMode(GL_FRONT_AND_BACK, GL_LINE); glUseProgram(drawprogram); glUniformMatrix4fv(viewprojectionmatrix, 1, GL_FALSE, vp.mat); world_render(*posptr, modelmatrix); if(lines) glPolygonMode(GL_FRONT_AND_BACK, GL_FILL); //render to screen here if(pp) { glUseProgram(ppprogram); GLfloat window_vec[2] = {windoww, windowh}; glUniform2fv(postprocess_uniform_window_szie, 1, window_vec); glBindFramebuffer(GL_FRAMEBUFFER, 0); glDisable(GL_DEPTH_TEST); glClear(GL_COLOR_BUFFER_BIT); glBindBuffer(GL_ARRAY_BUFFER, pppointbuffer); glVertexAttribPointer(0, 2, GL_FLOAT, GL_FALSE, 0, 0); glEnableVertexAttribArray(0); glActiveTexture(GL_TEXTURE0); glBindTexture(GL_TEXTURE_2D, renderbuffer.colorbuffer); glActiveTexture(GL_TEXTURE1); glBindTexture(GL_TEXTURE_2D, renderbuffer.depthbuffer); glDrawArrays(GL_TRIANGLES, 0, 6); } textbox_render(textbox_fps); }