コード例 #1
0
ファイル: ogl_display.c プロジェクト: SaiSrini/Shooter
ALLEGRO_BITMAP_OGL* _al_ogl_create_backbuffer(ALLEGRO_DISPLAY *disp)
{
   ALLEGRO_BITMAP_OGL *ogl_backbuffer;
   ALLEGRO_BITMAP *backbuffer;
   ALLEGRO_STATE backup;
   int format;

   ALLEGRO_DEBUG("Creating backbuffer\n");

   al_store_state(&backup, ALLEGRO_STATE_NEW_BITMAP_PARAMETERS);

   // FIXME: _al_deduce_color_format would work fine if the display paramerers
   // are filled in, for WIZ and IPOD
#ifdef ALLEGRO_GP2XWIZ
   format = ALLEGRO_PIXEL_FORMAT_RGB_565; /* Only support display format */
#elif defined ALLEGRO_IPHONE
   format = ALLEGRO_PIXEL_FORMAT_ABGR_8888_LE;
   // TODO: This one is also supported
   //format = ALLEGRO_PIXEL_FORMAT_RGB_565;
#else
   format = _al_deduce_color_format(&disp->extra_settings);
   /* Eww. No OpenGL hardware in the world does that - let's just
    * switch to some default.
    */
   if (al_get_pixel_size(format) == 3) {
      /* Or should we use RGBA? Maybe only if not Nvidia cards? */
      format = ALLEGRO_PIXEL_FORMAT_ABGR_8888;
   }
#endif
   ALLEGRO_TRACE_CHANNEL_LEVEL("display", 1)("Deduced format %s for backbuffer.\n",
      _al_pixel_format_name(format));

   /* Now that the display backbuffer has a format, update extra_settings so
    * the user can query it back.
    */
   _al_set_color_components(format, &disp->extra_settings, ALLEGRO_REQUIRE);
   disp->backbuffer_format = format;

   ALLEGRO_DEBUG("Creating backbuffer bitmap\n");
   al_set_new_bitmap_format(format);
   /* Using ALLEGRO_NO_PRESERVE_TEXTURE prevents extra memory being allocated */
   al_set_new_bitmap_flags(ALLEGRO_VIDEO_BITMAP | ALLEGRO_NO_PRESERVE_TEXTURE);
   backbuffer = _al_ogl_create_bitmap(disp, disp->w, disp->h);
   al_restore_state(&backup);

   if (!backbuffer) {
      ALLEGRO_DEBUG("Backbuffer bitmap creation failed.\n");
      return NULL;
   }
   
   ALLEGRO_TRACE_CHANNEL_LEVEL("display", 1)(
      "Created backbuffer bitmap (actual format: %s)\n",
      _al_pixel_format_name(backbuffer->format));

   ogl_backbuffer = (ALLEGRO_BITMAP_OGL*)backbuffer;
   ogl_backbuffer->is_backbuffer = 1;
   backbuffer->display = disp;

   return ogl_backbuffer;
}
コード例 #2
0
ファイル: wsystem.c プロジェクト: BorisCarvajal/allegro5
static int win_get_num_display_modes(void)
{
    int format = _al_deduce_color_format(_al_get_new_display_settings());
    int refresh_rate = al_get_new_display_refresh_rate();
    int flags = al_get_new_display_flags();

#if defined ALLEGRO_CFG_OPENGL
    if (flags & ALLEGRO_OPENGL) {
        return _al_wgl_get_num_display_modes(format, refresh_rate, flags);
    }
#endif
#if defined ALLEGRO_CFG_D3D
    return _al_d3d_get_num_display_modes(format, refresh_rate, flags);
#endif

    return 0;
}
コード例 #3
0
ファイル: wsystem.c プロジェクト: BorisCarvajal/allegro5
static ALLEGRO_DISPLAY_MODE *win_get_display_mode(int index,
        ALLEGRO_DISPLAY_MODE *mode)
{
    int format = _al_deduce_color_format(_al_get_new_display_settings());
    int refresh_rate = al_get_new_display_refresh_rate();
    int flags = al_get_new_display_flags();

#if defined ALLEGRO_CFG_OPENGL
    if (flags & ALLEGRO_OPENGL) {
        return _al_wgl_get_display_mode(index, format, refresh_rate, flags, mode);
    }
#endif
#if defined ALLEGRO_CFG_D3D
    return _al_d3d_get_display_mode(index, format, refresh_rate, flags, mode);
#endif


    return NULL;
}