Exemple #1
0
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);
}
Exemple #2
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);
}
Exemple #3
0
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);
}