void LevelGraphic::draw() { if (nivel_activo()) { al_draw_bitmap(bmp,0,0,0); switch (get_estado()) { case INICIALIZADO: if (font_transito) { al_draw_textf(font_transito,al_map_rgb(8,8,138),300 ,270 ,ALLEGRO_ALIGN_CENTRE , "%s: %d","nivel", get_level()); } else { printf("error al cargar el font\n"); } break; case CREADO: if (font) { al_draw_textf(font,al_map_rgb(8,8,138),get_x() ,get_y() ,ALLEGRO_ALIGN_LEFT , "%s: %d",title.c_str(), get_level()); } else { printf("error al cargar el font\n"); } break; case DESTRUIDO: if (last_level()){ if (font_transito) { al_draw_textf(font_transito,al_map_rgb(8,8,138),300 ,270 ,ALLEGRO_ALIGN_CENTRE , "%s","Game over"); } else { printf("error al cargar el font\n"); } } else { if (font_transito) { al_draw_textf(font_transito,al_map_rgb(8,8,138),300 ,270 ,ALLEGRO_ALIGN_CENTRE , "%s","Sigue jugando"); } else { printf("error al cargar el font\n"); } } break; default: break; } } // al_draw_text(font, al_map_rgb(255, 0, 255), 50, 50, 0, "Hello World"); }
static struct pipe_sampler_view * st_get_texture_sampler_view_from_stobj(struct st_context *st, struct st_texture_object *stObj, enum pipe_format format, unsigned glsl_version) { struct pipe_sampler_view **sv; const struct st_texture_image *firstImage; if (!stObj || !stObj->pt) { return NULL; } sv = st_texture_get_sampler_view(st, stObj); if (util_format_is_depth_and_stencil(format)) { if (stObj->base.StencilSampling) format = util_format_stencil_only(format); else { firstImage = st_texture_image_const(_mesa_base_tex_image(&stObj->base)); if (firstImage->base._BaseFormat == GL_STENCIL_INDEX) format = util_format_stencil_only(format); } } /* if sampler view has changed dereference it */ if (*sv) { if (check_sampler_swizzle(stObj, *sv, glsl_version) || (format != (*sv)->format) || gl_target_to_pipe(stObj->base.Target) != (*sv)->target || stObj->base.MinLevel + stObj->base.BaseLevel != (*sv)->u.tex.first_level || last_level(stObj) != (*sv)->u.tex.last_level || stObj->base.MinLayer != (*sv)->u.tex.first_layer || last_layer(stObj) != (*sv)->u.tex.last_layer) { pipe_sampler_view_reference(sv, NULL); } } if (!*sv) { *sv = st_create_texture_sampler_view_from_stobj(st->pipe, stObj, format, glsl_version); } else if ((*sv)->context != st->pipe) { /* Recreate view in correct context, use existing view as template */ struct pipe_sampler_view *new_sv = st->pipe->create_sampler_view(st->pipe, stObj->pt, *sv); pipe_sampler_view_reference(sv, NULL); *sv = new_sv; } return *sv; }
struct pipe_sampler_view * st_get_texture_sampler_view_from_stobj(struct st_context *st, struct st_texture_object *stObj, const struct gl_sampler_object *samp, unsigned glsl_version) { struct pipe_sampler_view **sv; if (!stObj || !stObj->pt) { return NULL; } sv = st_texture_get_sampler_view(st, stObj); if (*sv) { /* Debug check: make sure that the sampler view's parameters are * what they're supposed to be. */ MAYBE_UNUSED struct pipe_sampler_view *view = *sv; assert(!check_sampler_swizzle(st, stObj, view, glsl_version)); assert(get_sampler_view_format(st, stObj, samp) == view->format); assert(gl_target_to_pipe(stObj->base.Target) == view->target); if (stObj->base.Target == GL_TEXTURE_BUFFER) { unsigned base = stObj->base.BufferOffset; MAYBE_UNUSED unsigned size = MIN2(stObj->pt->width0 - base, (unsigned) stObj->base.BufferSize); assert(view->u.buf.offset == base); assert(view->u.buf.size == size); } else { assert(stObj->base.MinLevel + stObj->base.BaseLevel == view->u.tex.first_level); assert(last_level(stObj) == view->u.tex.last_level); assert(stObj->layer_override || stObj->base.MinLayer == view->u.tex.first_layer); assert(stObj->layer_override || last_layer(stObj) == view->u.tex.last_layer); assert(!stObj->layer_override || (stObj->layer_override == view->u.tex.first_layer && stObj->layer_override == view->u.tex.last_layer)); } } else { /* create new sampler view */ enum pipe_format format = get_sampler_view_format(st, stObj, samp); *sv = st_create_texture_sampler_view_from_stobj(st, stObj, format, glsl_version); } return *sv; }
static struct pipe_sampler_view * st_create_texture_sampler_view_from_stobj(struct pipe_context *pipe, struct st_texture_object *stObj, const struct gl_sampler_object *samp, enum pipe_format format) { struct pipe_sampler_view templ; unsigned swizzle = get_texture_format_swizzle(stObj); u_sampler_view_default_template(&templ, stObj->pt, format); if (stObj->pt->target == PIPE_BUFFER) { unsigned base, size; unsigned f, n; const struct util_format_description *desc = util_format_description(templ.format); base = stObj->base.BufferOffset; if (base >= stObj->pt->width0) return NULL; size = MIN2(stObj->pt->width0 - base, (unsigned)stObj->base.BufferSize); f = ((base * 8) / desc->block.bits) * desc->block.width; n = ((size * 8) / desc->block.bits) * desc->block.width; if (!n) return NULL; templ.u.buf.first_element = f; templ.u.buf.last_element = f + (n - 1); } else { templ.u.tex.first_level = stObj->base.MinLevel + stObj->base.BaseLevel; templ.u.tex.last_level = last_level(stObj); assert(templ.u.tex.first_level <= templ.u.tex.last_level); templ.u.tex.first_layer = stObj->base.MinLayer; templ.u.tex.last_layer = last_layer(stObj); assert(templ.u.tex.first_layer <= templ.u.tex.last_layer); templ.target = gl_target_to_pipe(stObj->base.Target); } if (swizzle != SWIZZLE_NOOP) { templ.swizzle_r = GET_SWZ(swizzle, 0); templ.swizzle_g = GET_SWZ(swizzle, 1); templ.swizzle_b = GET_SWZ(swizzle, 2); templ.swizzle_a = GET_SWZ(swizzle, 3); } return pipe->create_sampler_view(pipe, stObj->pt, &templ); }
static struct pipe_sampler_view * st_create_texture_sampler_view_from_stobj(struct st_context *st, struct st_texture_object *stObj, enum pipe_format format, unsigned glsl_version) { struct pipe_sampler_view templ; unsigned swizzle = get_texture_format_swizzle(st, stObj, glsl_version); u_sampler_view_default_template(&templ, stObj->pt, format); if (stObj->pt->target == PIPE_BUFFER) { unsigned base, size; base = stObj->base.BufferOffset; if (base >= stObj->pt->width0) return NULL; size = MIN2(stObj->pt->width0 - base, (unsigned)stObj->base.BufferSize); if (!size) return NULL; templ.u.buf.offset = base; templ.u.buf.size = size; } else { templ.u.tex.first_level = stObj->base.MinLevel + stObj->base.BaseLevel; templ.u.tex.last_level = last_level(stObj); assert(templ.u.tex.first_level <= templ.u.tex.last_level); if (stObj->layer_override) { templ.u.tex.first_layer = templ.u.tex.last_layer = stObj->layer_override; } else { templ.u.tex.first_layer = stObj->base.MinLayer; templ.u.tex.last_layer = last_layer(stObj); } assert(templ.u.tex.first_layer <= templ.u.tex.last_layer); templ.target = gl_target_to_pipe(stObj->base.Target); } templ.swizzle_r = GET_SWZ(swizzle, 0); templ.swizzle_g = GET_SWZ(swizzle, 1); templ.swizzle_b = GET_SWZ(swizzle, 2); templ.swizzle_a = GET_SWZ(swizzle, 3); return st->pipe->create_sampler_view(st->pipe, stObj->pt, &templ); }