void GFX_ortho( float left, float right, float bottom, float top, float clip_start, float clip_end )
{
	switch( gfx.matrix_mode )
	{
		case MODELVIEW_MATRIX:
		{
			mat4_ortho( GFX_get_modelview_matrix(), left, right, bottom, top, clip_start, clip_end ); 
			
			break;
		}
	
		case PROJECTION_MATRIX:
		{
			mat4_ortho( GFX_get_projection_matrix(), left, right, bottom, top, clip_start, clip_end );
			
			break;
		}

		case TEXTURE_MATRIX:
		{
			mat4_ortho( GFX_get_texture_matrix(), left, right, bottom, top, clip_start, clip_end );
			
			break;
		}		
	}
}
Ejemplo n.º 2
0
void display_step(struct s_vm* vm, t_display* display)
{
	t_mat4 screen;

	glfwGetFramebufferSize(display->window, &display->frame_buffer_width, &display->frame_buffer_height);
	display->frame_buffer_ratio =
	(float)display->frame_buffer_width / (float)display->frame_buffer_height;

	mat4_ident(&screen);
	mat4_ortho(&screen, 0.0f,
		(float)display->frame_buffer_width * 0.25f,
		(float)display->frame_buffer_height * 0.25f,
		0.0f, -100.0f, 100.0f);
	display_update_camera(display);

	glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
	glViewport(0, 0, display->frame_buffer_width, display->frame_buffer_height);
	glEnable(GL_BLEND);
	glDisable(GL_DEPTH_TEST);
	glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);

	display_render_memory(vm, display);

	display_render_io_read(vm, display);
	display_render_io_write(vm, display);
	glDisable(GL_BLEND);
	display_render_io_process(vm, display);
	glEnable(GL_BLEND);
	// display_text_render(display->texts, &screen);
	// display_text_clear(display->texts);
	glfwSwapBuffers(display->window);
	glfwPollEvents();

}
Ejemplo n.º 3
0
void camera_update(camera_t *camera)
{
    float size;

    camera->fovy = 20.;
    if (camera->move_to_target) {
        camera->move_to_target = !vec3_ilerp_const(
                &camera->ofs, vec3_neg(camera->target), camera->dist / 128);
    }
    // Update the camera mats
    camera->view_mat = mat4_identity;
    mat4_itranslate(&camera->view_mat, 0, 0, -camera->dist);
    mat4_imul_quat(&camera->view_mat, camera->rot);
    mat4_itranslate(&camera->view_mat,
           camera->ofs.x, camera->ofs.y, camera->ofs.z);

    if (camera->ortho) {
        size = camera->dist;
        camera->proj_mat = mat4_ortho(
                -size, +size,
                -size / camera->aspect, +size / camera->aspect,
                0, 1000);
    } else {
        camera->proj_mat = mat4_perspective(
                camera->fovy, camera->aspect, 1, 1000);
    }
}
Ejemplo n.º 4
0
void proj_tests(void){
	mat4_t m = mat4_look_at(vec4_new(0, 0, 5, 0),
		vec4_new(0, 0, 0, 0), vec4_new(0, 1, 0, 0));
	printf("Look at matrix:\n");
	mat4_print(m);

	m = mat4_ortho(-1, 1, -1, 1, 1, 100);
	printf("ortho matrix:\n");
	mat4_print(m);

	m = mat4_perspective(90, 1, 1, 100);
	printf("perspective:\n");
	mat4_print(m);
}
Ejemplo n.º 5
0
void display_update_camera(t_display* display)
{
	float width = display->frame_buffer_width  * display->display_zoom * 0.5f;
	float height = display->frame_buffer_height * display->display_zoom * 0.5f;

	mat4_ident(&display->projection_view);

	mat4_ortho(&display->projection_view,
		display->display_center_x - width,
		display->display_center_x + width,
		display->display_center_y + height,
		display->display_center_y - height,
		0.0f, 100.0f);
}