Allegro c++ blad z set_color_depth()
Ostatnio zmodyfikowano 2013-03-21 17:24
fers334 Temat założony przez niniejszego użytkownika |
Allegro c++ blad z set_color_depth() » 2013-03-21 16:19:29 Siemka jestem nowy na forum i od niedawna uczę się allegro c++.I oto moje pytanie , a mianowicie gdy tworze w bloku main instrukcja set_color_depth() ustawie glebie kolorów na 8 to wszystko jest ok natomiast powyżej 8 bit gdy tworze nowy plik nagłówkowy a w nim w konstruktorze klasy wczytuje bitmape , np. :
BITMAP * postac; postac = load_bitmap("postac.bmp",default_palette);
Oczywiście " BITMAP * postać; " Jest jako składnik prywatny funkcji.
To mam taki problem ze przy wczytaniu tego obrazka na bufor przez funkcje składowa klasy postać jest zamazana, inne kolory , rozdwojona nawet czasem i nie wiem co to powoduje jak zrobię to samo w funkcji main jest dobrze lecz , z funkcji składowej klasy powstaje problem. Proszę o pomoc.
Z góry dzięki.
|
|
pekfos |
» 2013-03-21 16:25:37 Spróbuj przebudować projekt. (Rebuild all) |
|
fers334 Temat założony przez niniejszego użytkownika |
» 2013-03-21 16:41:02 Niestety nic nie pomogło. Co może mieć na to wpływ. Jedyna różnica w tym ze zamiast w main robię to w innym pliku i dołączam nagłówek w main , Może coś jest z funkcją rysującą podam kod : Plik gracz.h
#include <allegro.h>
class gracz { BITMAP * postac; public: gracz() : postac( 0 ) { postac = load_bitmap( "postac_stojaca_w_miejscu.bmp", default_palette ); } void rysuj_gracza( BITMAP * bufor ) { masked_blit( postac, bufor, 0, 0, 0, 0, 47, 69 ); } };
plik main.cpp
#include <allegro.h> #include "myszka.h" #include "gracz.h"
volatile int speed_fps = 0; void incremented_speed() { speed_fps++; }
LOCK_FUNCTION( incremented_speed ); LOCK_VARIABLE( speed_fps );
int main() { allegro_init(); mysz mysz_screen; gracz postac_gracza; install_keyboard(); install_mouse(); install_timer(); install_int_ex( incremented_speed, BPS_TO_TIMER( 100 ) ); set_color_depth( 16 ); set_gfx_mode( GFX_AUTODETECT_WINDOWED, 800, 600, 0, 0 ); clear_to_color( screen, makecol( 125, 125, 125 ) ); show_mouse( screen ); unscare_mouse(); BITMAP * bufor = 0; bufor = create_bitmap( 800, 600 ); while( !key[ KEY_ESC ] ) { while( speed_fps > 0 ) { mysz_screen.ustaw_wspolzende_myszy(); mysz_screen.czytaj_wspolzedne_myszy( bufor ); postac_gracza.rysuj_gracza( bufor ); blit( bufor, screen, 0, 0, 0, 0, 800, 600 ); clear_to_color( bufor, makecol( 50, 50, 50 ) ); speed_fps--; } } allegro_exit(); return 1; } END_OF_MAIN();
Funkcje na myszce nie maja raczej znaczenia one tylko pobierają jej wspoł. i wypisują je na ekranie. Sprawdziłem i nawet kopiując postać w main nadal jest to samo. Czym to jest spowodowane ze przy 8+ bitowej glębi kolorów postać wyświetla blednie ? Błąd musi być w wczytywaniu w klasie lub w przestarzałej bibliotece allegro 4.2 czy to tego może być wina ? |
|
pekfos |
» 2013-03-21 17:19:58 Utwórz obiekt 'gracz'a po tuż przed pętlą główną. |
|
fers334 Temat założony przez niniejszego użytkownika |
» 2013-03-21 17:24:05 O dzięki jest git.
A mam pytanie doradził byś w którym miejscu przy pisaniu wiekszych projektow umieszczas animacje ?
Animacje gracza w klasie gracza animacje przeciwnika w klasie przeciwnik
czy all do klasy animacja czy jak ? |
|
« 1 » |