Autor Wątek: Allegro i bitmapa w zasobach  (Przeczytany 3077 razy)

Offline sh33run

  • Użytkownik

# Styczeń 20, 2008, 12:50:39
Witam

W jakim sposób można załadować do obiektu BITMAP w allegro bitmapę umieszczoną w zasobach?
Plik zasobów wygląda np. tak:
Kurs BITMAP "bmp/hand.bmp"
albo tak:
"Kurs" BITMAP "bmp/hand.bmp"

Wiem, że można ładować bitmapy z pliku, jednak nie doszedłem do tego jak można je ładować z zasobów.
(Chyba w allegro trzeba załadować także paletę bitmapy)

Offline Mr. Spam

  • Miłośnik przetworów mięsnych

Offline shyha

  • Użytkownik
    • Shyha@Flickr

# Styczeń 20, 2008, 12:52:19
Jeżeli jakaś z funkcji 'do bitmap' z allegro pozwala ci wczytywać z pamięci to możesz zasób sobie właśnie do pamięci wczytać i podać wskażnik tej funkcji. Jeśli nie, to jest chamska metoda z zapisywaniem zasobów do tymczasowych plików ;) Nie znam allegro, tak więc nie powiem ci czy jest funkcja do wczytywania prosto z zasobów (nie sądzę, jeśli to jest cross-platform)
« Ostatnia zmiana: Styczeń 20, 2008, 12:54:04 wysłana przez shyha »

Offline sh33run

  • Użytkownik

# Styczeń 20, 2008, 13:13:00
No właśnie problem w tym, że nie znalazłem żadnej takiej funkcji  :-\
A mijało by się z celem jakbym już miał tą metodą z zapisywaniem do plików zrobić.

Btw. Zauważyłem, że allegro jest dosyć powolne w renderowaniu

Edit:
Żeby tutaj chodziło tylko o duże pliki. Ba. Nawet głupiego kursora nie mogę umieścić w zasobach do wykorzystania.
« Ostatnia zmiana: Styczeń 20, 2008, 13:15:31 wysłana przez sh33run »

Offline feelon

  • Użytkownik
    • www.feelon.pl

# Styczeń 20, 2008, 13:34:43
Jest funkcja konwertujaca z HBITMAP do bitmapy allegrowej :

BITMAP *convert_hbitmap_to_bitmap(HBITMAP bitmap);

//edit :

Swoja droga, to w allegro maualu masz napisane wszystkie platfrom specifics dla kazdego systemu, i tak np. w Windowsie mozesz wywolac set_gfx_mode() z GFX_DIRECTX_ACCEL co napewno spowoduje wzrost szybkosci renderowania, oczywiscie jezeli bedziesz mial zainstalowanego DX.
« Ostatnia zmiana: Styczeń 20, 2008, 13:37:21 wysłana przez feelon »

Offline Złośliwiec

  • Użytkownik
    • Dark Cult

# Styczeń 20, 2008, 13:37:22
Pliki zasobów to rzecz specyficzna dla Windows, więc użyj WinAPI do wczytywania z nich bitmap. Potem pozostaje ci tylko konwersja z formatu BMP do formatu używanego przez Allegro. Ten ostatni nie jest jakoś szczególnie skomplikowany, więc konwersja nie powinna przysporzyć problemów.

//EDIT:
O, jeśli wierzyć powyższemu postowi, to nawet jest specjalna funkcja do takiej konwersji :).

Offline sh33run

  • Użytkownik

# Styczeń 20, 2008, 13:42:19
Sprawdzę, dziękuję :)

Offline Krzysiek K.

  • Moderator
    • DevKK.net

# Styczeń 20, 2008, 13:43:14
Cytuj
w Windowsie mozesz wywolac set_gfx_mode() z GFX_DIRECTX_ACCEL co napewno spowoduje wzrost szybkosci renderowania, oczywiscie jezeli bedziesz mial zainstalowanego DX.
Allegro opiera się na DirectX 7, więc niekoniecznie, chyba że zastosujesz specjalne triki (ale prościej już użyć AllegroGL). :)

Offline feelon

  • Użytkownik
    • www.feelon.pl

# Styczeń 20, 2008, 13:47:10
Allegro opiera się na DirectX 7, więc niekoniecznie, chyba że zastosujesz specjalne triki (ale prościej już użyć AllegroGL). :)

Pewnie racja, aczkolwiek i tak napewno jest szybciej niz renderowanie za pomoca windowsowego GDI ;-)

Offline Krzysiek K.

  • Moderator
    • DevKK.net

# Styczeń 20, 2008, 13:50:19
Cytuj
Pewnie racja, aczkolwiek i tak napewno jest szybciej niz renderowanie za pomoca windowsowego GDI ;-)
Allegro nie używa GDI tylko samo grzebie bezpośrednio w pamięci. W normalnym przypadku używa też DirectX'a, ale tylko po to, żeby ta pamięć jakoś wywalić na ekran. :)

Offline sh33run

  • Użytkownik

# Styczeń 20, 2008, 13:51:46
Używam tego set_gfx_mode i i tak powoli renderuje :-*

Offline feelon

  • Użytkownik
    • www.feelon.pl

# Styczeń 20, 2008, 13:54:21
Allegro nie używa GDI tylko samo grzebie bezpośrednio w pamięci. W normalnym przypadku używa też DirectX'a, ale tylko po to, żeby ta pamięć jakoś wywalić na ekran. :)

Jest mozliwosc renderowania za pomoca GFX_GDI. Ale przyznaje racje, uzywanie samego AUTODETECT wybiera najlepsza mozliwa opcje.

Offline Krzysiek K.

  • Moderator
    • DevKK.net

# Styczeń 20, 2008, 15:48:20
Cytuj
Jest mozliwosc renderowania za pomoca GFX_GDI.
Ale to nie zmieni faktu, że Allegro nadal użyje tego GDI tylko do wyświetlenia finalnego wyniku, a wszystkie inne bitmapy będą trzymane przez Allegro po swojemu. :)

Offline sh33run

  • Użytkownik

# Styczeń 20, 2008, 15:59:17
Teraz nie wiem jak załadować do HBITMAP plik z zasobów.
Funkcja LoadBitmap nie jest w winalleg.h, a nie mogę dołączyć windows.h

Jakieś rady?

Offline shyha

  • Użytkownik
    • Shyha@Flickr

# Styczeń 20, 2008, 16:17:07
Czemu nie możesz dołączyć windows.h?

Offline sh33run

  • Użytkownik

# Styczeń 20, 2008, 16:57:51
Tak, dlatego zrobili bibliotekę winalleg.h
Przy próbie dołączenia windows.h nakrywają się nazwy (BITMAP między innymi) i wyskakują błędy. Kto nie wierzy niech sam sprawdzi ;]

EDIT

Ok, problem rozwiązany
« Ostatnia zmiana: Styczeń 20, 2008, 17:09:18 wysłana przez sh33run »