示例#1
0
/******************************************************************************\
 Pre-renders the extra rotations of the tile mask and the terrain tile sheets.
 This function will generate tile textures 1-3.
\******************************************************************************/
static void prerender_tiles(void)
{
        r_texture_t *blend_mask, *rotated_mask, *masked_terrain;
        int i, x, y;

        blend_mask = R_texture_load("models/globe/blend_mask.png", FALSE);
        if (!blend_mask || !r_terrain_tex)
                C_error("Failed to load essential prerendering assets");

        /* Render the blend mask to tile size */
        R_texture_select(blend_mask);
        setup_tile_uv_mask();
        render_tile(0, 0);
        R_texture_free(blend_mask);
        blend_mask = save_buffer((int)tile.x, (int)tile.y);
        R_texture_upload(blend_mask);
        finish_buffer();

        rotated_mask = NULL;
        for (i = 0; i < 3; i++) {

                /* Render the blend mask at tile size and orientation */
                R_texture_select(blend_mask);
                setup_tile_uv(i, -1, -1, -1);
                for (y = 0; y < R_TILE_SHEET_H; y++)
                        for (x = 0; x < R_TILE_SHEET_W; x++)
                                render_tile(x, y);
                rotated_mask = save_buffer((int)sheet.x, (int)sheet.y);
                R_texture_upload(rotated_mask);
                finish_buffer();

                /* Render the tiles at this orientation */
                R_texture_select(r_terrain_tex);
                for (y = 0; y < R_TILE_SHEET_H; y++)
                        for (x = 0; x < R_TILE_SHEET_W; x++) {
                                setup_tile_uv(0, i, x, y);
                                render_tile(x, y);
                        }

                /* Read the terrain back in and mask it */
                masked_terrain = save_buffer((int)sheet.x, (int)sheet.y);
                R_surface_mask(masked_terrain->surface, rotated_mask->surface);
                R_texture_free(rotated_mask);
                finish_buffer();

                /* Render the masked terrain on top of the terrain texture
                   and read it back in to replace the old terrain texture */
                R_texture_render(r_terrain_tex, 0, 0);
                R_texture_upload(masked_terrain);
                R_texture_render(masked_terrain, 0, 0);
                if (r_test_prerender.value.n)
                        R_texture_render(masked_terrain, (int)sheet.x, 0);
                R_texture_free(masked_terrain);
                R_texture_free(r_terrain_tex);
                r_terrain_tex = save_buffer((int)sheet.x, (int)sheet.y);
                R_texture_upload(r_terrain_tex);
                finish_buffer();
        }
        R_texture_free(blend_mask);
}
示例#2
0
文件: world.cpp 项目: Arc0re/deviant
void World::renderCellmap()
{
	for (uint a = 0; a < newCellmap.size(); ++a) {
		for (uint b = 0; b < newCellmap[a].size(); ++b) {
		    if (newCellmap[a][b] == true) {
				render_tile(CHAR_hash, a*TILE_WIDTH, b*TILE_HEIGHT, BLACK, DEEPPURPLE);
			} else if (newCellmap[a][b] == false) {
				render_tile(CHAR_dot, a*TILE_WIDTH, b*TILE_HEIGHT, BLACK, DEEPGREY);
			}
		}
	}
}
示例#3
0
static void
render(unsigned char *img, int comps, int w, int h, int nsubsamples, int tilew, int tileh)
{

    float *fimg = (float *)malloc(sizeof(float) * w * h * 3);
    memset((void *)fimg, 0, sizeof(float) * w * h * 3);
    
    dispatch_queue_t dque = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0);
    //dispatch_queue_t dque = dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_HIGH, 0);
    dispatch_group_t dgroup = dispatch_group_create();
    
    int i, j;
    for (j = 0; j < h; j += tileh) {
        for (i = 0; i < w; i += tilew) {

            void (^renderblock)(void) = ^{
                render_tile(img, comps, fimg, w, h, nsubsamples, i, j, tilew, tileh);
            };
            //renderblock();
            dispatch_group_async(dgroup, dque, renderblock);
        }
    }
    
    dispatch_group_wait(dgroup, DISPATCH_TIME_FOREVER);
    //dispatch_release(dgroup);
}
示例#4
0
文件: main.c 项目: MarcelHB/c37
/*--------------------------------------------------------------------------*/
void create_output_buffer(Map* map, BufferTile* buf, int size) {
    /* Spieler in die Mitte, seine Position als Versatz benutzen */
    int i, j, translated_x, translated_y, center_x, center_y;
    Spawn* spawn = get_player_spawn(map);
    if(spawn == NULL) {
        fprintf(stderr, "Keine Spielfigur vorhanden!\n");
        exit(1);
    }
    clear_output_buffer(buf, size);

    center_x = OUTPUT_IN_GLYPHS_X / 2 + 1; center_y = OUTPUT_IN_GLYPHS_Y / 2 + 1;
    translated_x = center_x - spawn->x; translated_y = center_y - spawn->y;

    j = 0;
    for(i = 0; i < size; ++i) {
        unsigned int current_x, current_y;
        if(i != 0 && (i % (OUTPUT_IN_GLYPHS_X)) == 0) {
            ++j;
        }
        current_y = j;
        current_x = i % OUTPUT_IN_GLYPHS_X;
        /* unteres Renderende erreicht */
        if(current_y == OUTPUT_IN_GLYPHS_Y) {
            break;
        }
        /* Hier Kartenteil? */
        if(translated_x <= (int)current_x && translated_y <= (int)current_y && current_x < (translated_x + map->x) && current_y < (translated_y + map->y)) {
            render_tile(&buf[i], &map->tiles[(current_y - translated_y) * map->x + (current_x - translated_x)], map);
        }
    }
}
示例#5
0
文件: menu.c 项目: mikelizal/pilgrim
void menu_render_credits(void) {
    render_cam(render_display_w,render_display_h);
    render_tile_num(0,0,AST_TILE_MENU_FONDO);
   // render_numstr(300, 500, "0100001010010101...", 0);
    render_tile(menu_credits_x,menu_credits_y,&text_credits_tile);
    render_tile_num(menu_credits_x+620,menu_credits_y+415,AST_TILE_MENU_TITLE);
    render_tile_num(871-10,0+10,AST_TILE_BTN_NEXT);
}
示例#6
0
void render_tiles(sem_render_context* ctx, sem_world* world) {
	for (uint32_t j=0; j<world->max_y; j++) {
		for (uint32_t i=0; i<world->max_x; i++) {
			sem_coordinate coord;
			sem_coordinate_set(&coord, i, j);
			render_tile(ctx, coord, sem_tile_at(world, i, j));
		}
	}
}
示例#7
0
文件: menu.c 项目: mikelizal/pilgrim
void menu_render_hof(void) {
    render_cam(render_display_w,render_display_h);
    render_tile_num(0,0,AST_TILE_MENU_FONDO);
    render_tile(menu_hof_x,menu_hof_y,&text_highscores_tile);
    render_tile_num(871-10,0+10,AST_TILE_BTN_NEXT);
// botones del gamecenter
    if (game_gamecenter_available) {
        render_tile_num(871-10-30,540+10-20,AST_TILE_BTN_GC_LEADERBOARDS);
        render_tile_num(782-10-60,540+10-20,AST_TILE_BTN_GC_ACHIEVMENTS);
    }
}
示例#8
0
文件: menu.c 项目: mikelizal/pilgrim
void menu_render_results_panel(void) {
    float top_line=600;
    render_tile_num(0,0,AST_TILE_MENU_FONDO);
    render_tile(30,20,&text_highscores_tile);
    render_tile_num(40,top_line-1*80,AST_TILE_ICN_DISTANCE);
    render_tile_num(290,top_line-1*80,AST_TILE_ICN_TIME);
    //render_tile_num(510,top_line-2*80,AST_TILE_ICN_SPEED);
    render_tile_num(520,top_line-1*80,AST_TILE_ICN_PEREGRINO_HIT);
    render_tile_num(640,top_line-1*80,AST_TILE_ICN_BORDONERO_HIT);
    //render_tile_num(740,top_line-1*80,AST_TILE_ICN_FALLS);
    render_tile_num(820,top_line-1*80+5,AST_TILE_ICN_CARNE);
    render_tile_num(835,top_line-1*80,AST_TILE_ICN_FRUTA);    
}
示例#9
0
文件: object.cpp 项目: Arc0re/deviant
void Object::render()
{
	render_tile(this->sym, this->x, this->y, this->bg, this->t);
}
示例#10
0
/******************************************************************************\
 Pre-renders tiles for transition between base tile types.
\******************************************************************************/
static void prerender_transitions(void)
{
        r_texture_t *trans_mask, *inverted_mask, *large_mask, *masked_terrain;
        int x, y, tiles_a[] = {0, 1, 1, 2}, tiles_b[] = {1, 0, 2, 1};

        trans_mask = R_texture_load("models/globe/trans_mask.png", FALSE);
        if (!trans_mask || !r_terrain_tex)
                C_error("Failed to load essential prerendering assets");

        /* Render an inverted version of the mask */
        inverted_mask = R_texture_clone(trans_mask);
        R_surface_flip_v(inverted_mask->surface);
        R_surface_invert(inverted_mask->surface, TRUE, FALSE);
        R_texture_upload(inverted_mask);
        R_texture_select(inverted_mask);
        setup_tile_uv_mask();
        render_tile(0, 0);
        R_texture_free(inverted_mask);
        inverted_mask = save_buffer((int)tile.x, (int)tile.y);
        R_texture_upload(inverted_mask);
        finish_buffer();

        /* Render the transition mask to tile size */
        R_texture_select(trans_mask);
        setup_tile_uv_mask();
        render_tile(0, 0);
        R_texture_free(trans_mask);
        trans_mask = save_buffer((int)tile.x, (int)tile.y);
        R_texture_upload(trans_mask);
        finish_buffer();

        /* Render the transition mask tile sheet */
        for (y = 0; y < R_T_BASES - 1; y++) {
                R_texture_select(trans_mask);
                for (x = 0; x < 3; x++) {
                        setup_tile_uv(x, -1, -1, -1);
                        render_tile(x, y + 1);
                }
                R_texture_select(inverted_mask);
                for (x = 3; x < 6; x++) {
                        setup_tile_uv(x - 3, -1, -1, -1);
                        render_tile(x, y + 1);
                }
        }
        large_mask = save_buffer((int)sheet.x, (int)sheet.y);
        R_texture_free(trans_mask);
        R_texture_free(inverted_mask);
        finish_buffer();

        /* Render the masked layer of the terrain and read it back in */
        R_texture_select(r_terrain_tex);
        for (y = 0; y < R_T_BASES - 1; y++)
                for (x = 0; x < 3; x++) {
                        setup_tile_uv(0, -1, tiles_b[2 * y], 0);
                        render_tile(x, y + 1);
                        setup_tile_uv(0, -1, tiles_b[2 * y + 1], 0);
                        render_tile(x + 3, y + 1);
                }
        masked_terrain = save_buffer((int)sheet.x, (int)sheet.y);
        R_surface_mask(masked_terrain->surface, large_mask->surface);
        R_texture_free(large_mask);
        R_texture_upload(masked_terrain);
        finish_buffer();
        if (r_test_prerender.value.n)
                R_texture_render(masked_terrain, (int)sheet.x, 0);

        /* Render the base layer of the terrain */
        R_texture_render(r_terrain_tex, 0, 0);
        R_texture_select(r_terrain_tex);
        for (y = 0; y < R_T_BASES - 1; y++)
                for (x = 0; x < 3; x++) {
                        setup_tile_uv(0, -1, tiles_a[2 * y], 0);
                        render_tile(x, y + 1);
                        setup_tile_uv(0, -1, tiles_a[2 * y + 1], 0);
                        render_tile(x + 3, y + 1);
                }

        /* Render the masked terrain over the tile sheet and read it back in */
        R_texture_render(masked_terrain, 0, 0);
        R_texture_free(masked_terrain);
        R_texture_free(r_terrain_tex);
        r_terrain_tex = save_buffer((int)sheet.x, (int)sheet.y);
        r_terrain_tex->mipmaps = TRUE;
        R_texture_upload(r_terrain_tex);
        finish_buffer();
}