Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

Architekt

Community-Fossil

Beiträge: 2 481

Wohnort: Hamburg

Beruf: Student

  • Private Nachricht senden

11

18.07.2012, 16:28

Nach meiner schrecklichen Erfahrung, würde ich von Allegro 5 abraten. Zumindest auf meinem Laptop wo anscheinend kein Hardwarerendering unterstützt wird hatte ich eine Framerate von 2(!) wo ich mit der SDL oder SFML eine um die 70 hatte (SDL schneidet hier besser ab als SFML). Also ne 2er Framerate, das sind zwei Bilder pro Sekunde bei einem geladenen Hintergrundbild 800 x 600. Wie gesagt das gilt für Allegro 5.

Hast du einen Vergleich, wie das mit Allegro 4 aussieht?
Der einfachste Weg eine Kopie zu entfernen ist sie zu löschen.
- Stephan Schmidt -

12

18.07.2012, 20:01

Hast du einen Vergleich, wie das mit Allegro 4 aussieht?

Nein, ich hab gleich Allegro 5 benutzt. Mag sein, dass Allegro 4 besser läuft.

13

19.07.2012, 21:38

Nachdem ich das mit den Bitmaps jetzt hingekriegt habe (Ich hatte "nur" einen Zeiger auf eine BITMAP - mit dem aufruf von Bitmap = new Bitmap hatts dann geklappt)
stehe ich vor dem Problem, das ich bei dem laden einer Bitmap immer den ganzen Pfad mitgeben muss!

Also muss ich:

"C:\\Users\\Ghexor\\Visual Allegro\\Allegro\\Debug\\Data\\Bitmaps\\Test.bmp"

anstatt einfach nur:

"Data\\Bitmaps\\Test.bmp"

oder:

"\\Data\\Bitmaps\\Test.bmp"


zu schreiben.

Ich hoffe ihr könnt helfen!

Mfg

Ghexor

Saik0

Treue Seele

Beiträge: 171

Beruf: Anwendungsentwickler

  • Private Nachricht senden

14

20.07.2012, 13:27

"C:\\Users\\Ghexor\\Visual Allegro\\Allegro\\Debug\\Data\\Bitmaps\\Test.bmp"

Du könntest den Pfad zur Bild-Datei so übergeben. Wenn du aber möchtest, dass dein Spiel auch auf anderen Rechnern läuft, musst du das ein wenig anders machen.

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
//path holen
ALLEGRO_PATH *path = al_get_standard_path(ALLEGRO_RESOURCES_PATH);

//Order zum Path hin zu fügen
al_append_path_component(path, "resources");

//oder ordner wechseln
al_change_directory(al_path_cstr(path, '/'));
al_destroy_path(path);
 
//bilder laden
bmp1 = al_load_bitmap("foo.png");
bmp2 = al_load_bitmap("bar.png");


in der ALLEGRO_RESOURCES_PATH Variable musst du dann einfach den Pfad zu deiner exe angeben.

Beispiel:
c:/game/game.exe
c:/game/resources/foo.png
c:/game/resources/bar.png

ungetestet aber müsste so funktionieren.

gruß
Saik0

15

20.07.2012, 13:50

Danke für die Antwort aber der code basiert leider auf allegro 5.0 :hmm:

Saik0

Treue Seele

Beiträge: 171

Beruf: Anwendungsentwickler

  • Private Nachricht senden

16

20.07.2012, 15:15

klappt es denn mit der ersten Variante?

17

20.07.2012, 18:29

Mit C:\Users\... klappt es

18

21.07.2012, 23:26

Ähm,
du verletzt hier Regeln:
a) Du vergisst das END_OF_MAIN am Ende vom Allegro-Code

b)
Normalerweise mag Allegro die windows.h nicht. Deshalb benutzte ich die winalleg.h (nicht vergessen die winmm.a einzubinden

c)Allegro mag eigentlich auch WinMain() nicht. Denn dann funktioniert dass END_OF_MAIN nicht.

c) ist vielleicht der Grund für dein Problem, denn bei mir funktionieren die Relativen Pfade.

19

22.07.2012, 10:17

So müsste dein Code aussehen (lass die windows.h weg, die macht nur Probleme!)




C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
#include <allegro.h>

int main()
{


    allegro_init();
    install_timer();  //Timer immer VOR dem Sound!
    install_sound(DIGI_AUTODETECT, MIDI_AUTODETECT, NULL)) 
    install_keyboard()
    install_mouse;

 
     int res;

     set_color_depth(32); //Alles andere bringt unter Vista/7 Probleme

      res = set_gfx_mode(GFX_AUTODETECT_WINDOWED, 640, 480, 0, 0);
      if(res != 0)
       {
          res = set_gfx_mode(GFX_AUTODETECT_FULLSCREEN, 640, 480, 0, 0);
        }
         if(res != 0)
       {
          allegro_message("Could not set graphic mode!");
        }

        //Jetzt haben wir ein 640x480 Fenster mit 32-Bit Farbtiefe


   
      
        BITMAP *bild;

        bild = load_bitmap("pic.bmp", NULL);

   

    acquire_screen();

    blit(bild, screen,0,0,0,0,SCREEN_W,SCREEN_H);
    readkey();                                                              //Wartet bis eine Taste gedrückt wird
    release_screen();
    destroy_bitmap(bild);

    return 0;
}
END_OF_MAIN();                           //Damit Allegro weiß, dass dein Programm endet!


Angehängt das Bild, muss in den Ordner der EXE
»Expos« hat folgende Datei angehängt:
  • pic.bmp (921,65 kB - 37 mal heruntergeladen - zuletzt: 19.12.2023, 03:09)

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »Expos« (22.07.2012, 10:25)


Sylence

Community-Fossil

Beiträge: 1 663

Beruf: Softwareentwickler

  • Private Nachricht senden

20

22.07.2012, 12:35

c)Allegro mag eigentlich auch WinMain() nicht. Denn dann funktioniert dass END_OF_MAIN nicht.


Ja, weil END_OF_MAIN eine WinMain erzeugt...

Werbeanzeige

Ähnliche Themen