Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

[C++, Allegro 5] Fullscreen

Ostatnio zmodyfikowano 2014-12-28 13:07
Autor Wiadomość
Joda332
Temat założony przez niniejszego użytkownika
[C++, Allegro 5] Fullscreen
» 2014-08-26 14:59:02
Witam :)
Jak ustawiam na Full screen to mi wywala program przestał działać.
Taki kod
C/C++
#include <iostream>
#include <allegro5/allegro.h>
#include <allegro5/allegro_image.h>
#include <allegro5/allegro_audio.h>
#include <allegro5/allegro_acodec.h>
#include <allegro5/allegro_font.h>

ALLEGRO_CONFIG * config;
int vsync, fullscreen, frequency, rozm_x = 40, rozm_y = 80, txt_x, txt_y;
double wys, szer;


static int option( ALLEGRO_CONFIG * config, char const * name, int v )
{
    char const * value;
    char str[ 256 ];
    value = al_get_config_value( config, "settings", name );
    if( value )
         v = strtol( value, NULL, 0 );
    // sprintf(str, "%d", v);
    al_set_config_value( config, "settings", name, str );
    return v;
}


int main()
{
    al_init();
    al_init_image_addon();
    al_init_font_addon();
    al_install_keyboard();
   
    ///Wczytywanie zmiennych************************************************************************************************************
    config = al_load_config_file( "Files/Setings/Display.ini" ); /// zmiany rozdzielczosci, fullscreen itd. dokonujemy w pliku ini
    fullscreen = option( config, "fullscreen", 0 );
    frequency = option( config, "frequency", 0 );
    vsync = option( config, "vsync", 0 );
    szer = option( config, "szer", 0 );
    wys = option( config, "wys", 0 );
    double skala_x = szer / 800, skala_y = wys / 600;
    //skala_x = szer / 800 ;
    //skala_y = wys / 600 ;
    ///Jakieœ potrzebne coœ ************************************************************************************************************
   
   
    ALLEGRO_KEYBOARD_STATE klawiatura;
    //al_set_new_display_flags( ALLEGRO_FULLSCREEN );  /// TUTAJ !!! TUTAJ !!! TUTAJ !!!
    if( vsync ) al_set_new_display_option( ALLEGRO_VSYNC, vsync, ALLEGRO_SUGGEST ); //  true
   
    if( frequency ) al_set_new_display_refresh_rate( frequency );
   
    if( fullscreen ) al_set_new_display_flags( ALLEGRO_FULLSCREEN );
   
    ALLEGRO_DISPLAY * okno = al_create_display( szer, wys );
    al_set_window_title( okno, "Le giera se jest jaka jest ale jest bo lubi byæ D:" );
    ALLEGRO_EVENT_QUEUE * event_queue = al_create_event_queue();
    al_register_event_source( event_queue, al_get_display_event_source( okno ) );
    ALLEGRO_EVENT ev;
    /*std::cout << "\nfullscreen  " << fullscreen;
        std::cout << "\nfrequency  " << frequency;
        std::cout << "\nfrequency  " << frequency;
        std::cout << "\nvsync  " << vsync;
        std::cout << "\nszer  " << szer;
        std::cout << "\nwys  " << wys;*/
    ///Wczytywanie : Bitmap, Sampli, Fonts*************************************************************************************
    ALLEGRO_FONT * font8 = al_create_builtin_font();
   
    ALLEGRO_BITMAP * postac = al_load_bitmap( "Files/postac.png" );
    al_convert_mask_to_alpha( postac, al_map_rgb( 255, 255, 255 ) );
   
    ALLEGRO_BITMAP * mapka1 = al_load_bitmap( "Files/mapka1.png" );
    ///Deklaracje************************************************************************************************************
    double Poruszanie = al_get_time(), Poruszanie_wyk = 0.002;
    double Poruszanie1 = al_get_time(), Poruszanie1_wyk = 0.002;
    double Wyswietlanie = al_get_time();
   
    int postac_x = szer * 0.5, postac_y = wys * 0.5;
    ///Pêtla************************************************************************************************************
    std::cout << skala_x;
    std::cout << "\t" << skala_y;
    while( !al_key_down( & klawiatura, ALLEGRO_KEY_ESCAPE ) )
    {
       
        ///Poruszanie**************************************
        if( al_get_time() > Poruszanie + Poruszanie_wyk / skala_x )
        {
            if( al_key_down( & klawiatura, ALLEGRO_KEY_RIGHT ) && postac_x < szer -( rozm_x * skala_x ) ) postac_x = postac_x + 1;
           
            if( al_key_down( & klawiatura, ALLEGRO_KEY_LEFT ) && postac_x > 0 ) postac_x = postac_x - 1;
           
            Poruszanie = al_get_time();
        }
        if( al_get_time() > Poruszanie1 + Poruszanie1_wyk / skala_y )
        {
            if( al_key_down( & klawiatura, ALLEGRO_KEY_DOWN ) && postac_y < wys -( rozm_y * skala_y ) ) postac_y = postac_y + 1;
           
            if( al_key_down( & klawiatura, ALLEGRO_KEY_UP ) && postac_y > 0 ) postac_y = postac_y - 1;
           
            Poruszanie1 = al_get_time();
        }
        ///Obliczenia**************************************
        ///Wyœwietlanie************************************
        if( al_get_time() > Wyswietlanie + 0.005 )
        {
            al_clear_to_color( al_map_rgb( 0, 195, 255 ) );
            //al_draw_bitmap(mapka1, 0, 0, 0);
            //al_draw_bitmap(postac, postac_x, postac_y, 0);
            al_draw_tinted_scaled_rotated_bitmap( mapka1, al_map_rgba( 255, 255, 255, 255 ), 0, 0, 0, 0, skala_x, skala_y, 0, 0 );
            al_draw_tinted_scaled_rotated_bitmap( postac, al_map_rgba( 255, 255, 255, 255 ), 0, 0, postac_x, postac_y, skala_x, skala_y, 0, 0 );
            //al_draw_tinted_scaled_bitmap(mapka1, al_map_rgba( 255, 255, 255,0), 0, 0, 0, 0, 0 , 0, skala_x, skala_y, 0);
            //al_draw_tinted_scaled_bitmap(postac, al_map_rgba( 255, 255, 255,0), 0, 0, 0, 0, postac_x , postac_y, skala_x, skala_y, 0);
           
            al_flip_display();
            Wyswietlanie = al_get_time();
        }
       
        al_get_keyboard_state( & klawiatura );
    }
}
Jak można się domyślić w pliku ini mam ustawione fullscreen = 1 .
proszę o pomoc bo sam nie wiem gdzie jest błąd bo w innych programach mi ten kod działa :/
Może tak jak mam ALLEGRO_FULLSCREEN to nie działa jak mam za to ALLEGRO_WINDOWER to działa.
P-116127
pekfos
» 2014-08-26 16:39:40
Jaki rozmiar okna?
P-116140
Joda332
Temat założony przez niniejszego użytkownika
» 2014-08-27 13:07:35
Rozmiar okna  jest różny zmieniany w pliku ini program działa jak jest fullscreen jak rozmiary to 4x3 jak jest inaczej to nie działa
P-116259
DejaVu
» 2014-12-28 13:07:43
Nie da się przechodzić do trybu fullscreen dla dowolnej rozdzielczości. Rozdzielczość musi być poprawna dla sterownika karty graficznej, aby przejście do trybu pełnoekranowego zakończyło się powodzeniem.
P-123429
« 1 »
  Strona 1 z 1