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

kolor w allegro

Ostatnio zmodyfikowano 2010-09-21 22:06
Autor Wiadomość
inny1997
Temat założony przez niniejszego użytkownika
kolor w allegro
» 2010-09-17 16:38:54
ostatnio zrobiłem eksperyment i chciałem przerzucić obraz na liczbę(albo na coś innego)
,a później znowu na obraz i zobaczyć przekształcenie ,ale nie udało się  . później wymyśliłem , aby połączyć kilka obrazów w jeden . jedynym pomysłem było zsumowanie kolorów danych pixeli i narysowaniu pixela na takiej samej pozycji o takim kolorze
oto kod (jest napisany poprawnie)
C/C++
#include <allegro.h>
#include <math.h>
int main()
{
    allegro_init();
    install_timer();
    install_keyboard();
    set_color_depth( 32 );
    set_gfx_mode( GFX_AUTODETECT_WINDOWED, 800, 600, 0, 0 );
    install_sound( DIGI_AUTODETECT, MIDI_AUTODETECT, "" );
    set_volume( 255, 255 );
   
    BITMAP * przed1;
    BITMAP * przed2;
    BITMAP * przed3;
    BITMAP * po;
    przed1 = load_bmp( "kula.bmp", default_palette );
    przed2 = load_bmp( "kula2.bmp", default_palette );
    przed3 = load_bmp( "kula3.bmp", default_palette );
    po = create_bitmap( 255, 255 );
    int i = 0;
    int a = 0;
    clear_to_color( po, makecol( 255, 255, 255 ) );
    while( !key[ KEY_A ] )
    {
        if( i >= 255 )
        { i = 1; a++; }
        i++;
        putpixel( po, a, i, getpixel( przed1, a, i ) +
        getpixel( przed2, a, i ) +
        getpixel( przed3, a, i ) );
        blit( po, screen, 0, 0, 100, 100, 255, 255 );
    }
    save_bmp( "kula3.bmp", po, default_palette );
    destroy_bitmap( przed1 );
    destroy_bitmap( przed2 );
    destroy_bitmap( przed3 );
    destroy_bitmap( po );
}
END_OF_MAIN()
 
byłem zaskoczony że kolory można dodawać , czyli że kolor w allegro jest wyrażony za pomocą liczb. zrobiłem parę prób i rzeczywiście można .
później chciałem zobaczyć w jakiś sposób ta liczba jest przerzucana na kolor .
zadeklarowałem zmienną c , i za każdym razem dodawałem ją o 1. wychodziły mi jedynie kolory czarno-niebieskie . zastanawiam się jak te liczby są przerzucane na kolor ,bo to niema żadnej logiki.

oto kilka eksperymentów z tworzeniem różnych obrazów
 
C/C++
putpixel( po, a, i, i * i + a * a ); //najciekawszy

putpixel( po, a, i, i * i * a );
putpixel( po, a, i, i * i / a * a );
link do paczki
http://rapidshare.com/files/419609200/test_teleport.rar

ktoś wie coś o tym bo dla mnie to nowość.
P-22052
pekfos
» 2010-09-17 17:14:18
jest w tym logika
int rgb =( r << 16 ) |( g << 8 ) | b;

//edit: a z powrotem:
C/C++
r = rgb >> 16;
g =( rgb >> 8 ) & 0xff;
b = rgb & 0xff;

to właściwie zwykła arytmetyka binarna..
//edit2:
kolory są od 0x0 do 0xffffff czyli sztuka w ustawieniu wartości 0x0 - 0xff na odpowiednich miejscach:)
P-22055
inny1997
Temat założony przez niniejszego użytkownika
» 2010-09-17 17:57:30
też mi się wydawało że opiera się to na operacjach binarnych.
P-22056
DejaVu
» 2010-09-17 21:07:22
To nie są operacje binarne tylko bitowe (ale to tak przy okazji).
P-22069
dmx81
» 2010-09-21 21:23:40
to moze cie zaskocze, ale jest jeszcze cos takiego, jak kanal alfa (alpha) - wydaje mi sie ze w allegro tez mozna bylo tego uzywac - a wiaze sie to z przezroczystoscia, a dokladniej mowiac, z mieszaniem rysowanego koloru z aktualnym kolorem w danym miejscu. a co do dodawania wartosci liczbowych kolorow - w ten sposob dziala wlasnie negatyw, kontrast itd - np wartosci ponizej 127 sa obnizane, a powyzej sa zwiekszanie, przez co jasne jasnieje, ciemne ciemnieje :) pobaw sie z kolorami tworzac gradienty, czyli mozliwie plynne przejscia z jednej barwy w inna (lub wielokolorowe) np for(int i=0;i<255;i++){
rysuj_linie(x,y,x2,y2,r=0;g=0;b=i);y++,y2++;}
P-22237
szyx_yankez
» 2010-09-21 21:48:08
Czekajcie, to może teraz ja was obu zaskocze: kilka miesięcy temu pisałem sobie funkcije które dodają do obrazu efekty takie jak:
-Monochromatyka
-Efekt płasko żeźby
-gusian blur
-wykrywanie krawedzi
-Robienie z obrazu 2d obraz 3d(ofc, okularki potrzebne)
-Wyostrzenie, rozmycie
-i pare innych baierów.

Allegro, to biblioteka w której można by klona photoshopa napisać.
P-22241
ThudPoland
» 2010-09-21 21:49:37
W allegro. xD

Weź przestań.

Nie lepiej zaimplementować takie bajery w SDL'u albo już w najnowszym Allegro (nie było wtedy chyba pisane, kiedy ty go napisałeś).
P-22242
szyx_yankez
» 2010-09-21 22:06:53
Wiesz, ja wole allegro, ty wolisz sdl, to tak jak wojna opengl vs Directx, to dobre i to dobre, każda ma swoje zalety i wady które po dodaniu wychodzą na 0. Allegro wcale nie ma mniejszych możliwości niż sdl, a allegro 5 z szybkością bije go na głowe.

Nowsze allegro tj. allegro 5(4.9.x), pierwsze jego wersiję testowe wyszły jakieś 2 lata temu.
P-22245
« 1 »
  Strona 1 z 1