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

Jak to w ogóle się dzieje, że c++ może rysować?

Ostatnio zmodyfikowano 2017-05-30 18:02
Autor Wiadomość
MDK
Temat założony przez niniejszego użytkownika
Jak to w ogóle się dzieje, że c++ może rysować?
» 2017-04-25 01:06:27
Temat nie daje mi spokoju :P Mam na myśli to, że goły c++ z kompilatorem, to w sumie sama konsola. I teraz, żeby powstawały wszystkie graficzne programy, to ktoś musiał na początku opracować biblioteki obsługujące grafikę. Jak to zostało zrobione?
Są np. SFML, ALLegro, czy różne silniki graficzne.
Jest też np. biblioteka graphics.h, a w niej np. taka funkcja circle(); Jak to jest zrobione, że ona rysuje?
Jak sobie radzili pierwsi twórcy gier graficznych, pisanych np. pod DOSa? Jak odbywało się tworzenie grafiki? Nawet jeśli rysowali, powiedzmy piksel po pikselu, to jakoś musieli te piksele rysować.
P-160479
pekfos
» 2017-04-25 01:10:28
Żeby wyświetlić pixel pod DOSem wystarczy wstawić wartość do odpowiedniego miejsca w pamięci, o ile komputer działa w trybie graficznym.
P-160480
j23
» 2017-04-25 10:00:41
Jak sobie radzili pierwsi twórcy gier graficznych, pisanych np. pod DOSa?
Pisali własne rasteryzery, algorytmy rysujące czy teksturujące (nierzadko w assemblerze, bo wtedy nie było kart z akceleracją sprzętową, a procesory nie były zbyt wydajne).
P-160483
MDK
Temat założony przez niniejszego użytkownika
» 2017-04-25 13:45:23
W takim razie mieli ostro pod górkę. Ala taki już chyba los pionierów.
P-160485
crash
» 2017-05-24 21:04:55
Mieli, mieli :) Zawsze będzie pod górkę, takie życie.

https://github.com/SFML/SFML - ściągnij sobie źródła SFML i popaczaj jak to jest. Przyda się coś lepszego niż CodeBlocks czy CodeLite, polecam Eclipse i CDT. Pozwala na sprawną i szybką nawigację po kodzie.

Jeśli lubisz starożytność, zainstaluj DosBox, ściągnij Turbo Pascal i obadaj tryb 13h :)

P-161543
TobiPL
» 2017-05-30 18:02:47
a jakim cudem mój QLG działa ? :O...
prawdę mówiąc wystarczy do niego dodać tylko <windows.h> i masz grafike wraz z wszystkimi epickimi dodatkami ^_^

Nie wiem w sumie co to za pytanie tak do końca ;x...

bo w końcu obliczenie wszystkiego i zaprogramowanie to dziecinna zabawa...
przynajmniej dla mnie xD Tworzenie grafiki to cos co lubię więc może dlatego :D...


zobacz sobie... tak jak napisałeś np. "Jak to sie dzieje że Circle działa" czy jakoś tak napisałeś...

Mamy np. "Tfjerdzenie Pitagolasa" które pozwala nam obliczyć długość przeciw prostokątnej na podstawie przyprostokątnych...

innymi słowy jak mamy taki trójkąt z kątem 90 Stopni... to te 2 kreski które się stykają to "przyprostokątne"
a ta 3 długa to przeciwprostokątna... i teraz taki myk że Suma kwadratów przyprostokątnych = kwadratowi przeciw...


a przeciw prostokątna może być używana jako "Zasięg"


if((QLDiffrence(posy-playery,playery)*QLDiffrence(posx-playerx,playerx))<50000){
    image=QL_Land;
    QLDraw(posy-playery,posx-playerx);}

Tutaj masz przykladowo If-a który sprawdza przy użyciem tego Twierdzenia czy "Obiekt" w świecie gry znajduje się w "kole"
dookoła gracza w max. odległości 50.000 jednostek.. jeśli jest dalej to nie rysuje jeśli bliżej to rysuje :P

A^2 + B^2 = C^2 ^_^ to C po prostu traktuj jako "Zasięg" to wszystko wystarczy aby wyznaczyć który pixel jest w kole a który nie...
ofc. już coś takiego starczy do narysowania koła :P



Rysowanie lini też może się odbywać za pośrednictwem jednej prostej If-ki ^_^

Narysuj sobie na karteczce np. Kwadrat wypełniony mniejszymi kwadratami o wymiarach np. 10x10
i oblicz tym twierdzeniem jaką mają odległość kwadraciki od kwadracika w pozycji 0x0 ^_^ zobaczysz pewna prawidłowość :D



Kurde... chciałbym wkleić ci więcej kodu... ale np. działanie przewijania mapy... w grach
czy wiele innych Epickich rzeczy które może robić program... To całkiem sporo kodu jak na to forum...

za mało miejsca aby wszystko opisać ;c...









ooo to jeszcze ci opowiem o tym...
Kiedyś jak chyba dobrze wiesz pixele i grafika były BARDZO wymagające... obecnie możemy użyć np. do zapisania pixela
"Unsigned int" który posiada 4 bajty czyli 32 bity danych :D dzisiaj ludzie marnują te dane...

32 bity ?... aby zapisać jeden pixel ? :D...
cóż... dzisiaj sobie możemy na to pozwolić...


Kiedyś np. gry jak chyba pamiętasz przeważnie miały 2 / 4 / 6 / 8 kolorów...
przeważnie jeden obiekt miał max. 2 kolory... np. Stary Mario ^_^

jest to powodem NIESAMOWITEJ optymalizacji i oszczędności kodu...

wiadomo że bajt posiada 8 bitów... więc sprytni twórcy dzielili "mape" na 8 pixelowe kwadraty
wiadomo czemu ? :P Bit możę mieć jeden z 2 stanów... stąd tylko dwukolorowe postacie w grach ^_^

np. 0 0 0 1 1 1 0 0 to liczba 24 ^_^ i kiedy program widział liczbe 24 dokładnie wiedział jak ma wyglądać dany "8pixelowy kwadrat"

Kurde średnio umiem to wytłumaczyć bez przygotowania ale mam nadzieje że rozumiesz xDDDDD
dzisiaj każdy pixel na ekranie to też zmieniające się dane ;x... różne kolorki itp. xD





Rozpisałem się bez ładu i składu...
ale powiem tyle że Tworzenie grafiki nie było jak panowie wyrzej mówią "pod górkę"...
po prostu nie było "gotowców" a zrobienie tego od podstaw nie było jakimś przejawem geniuszu czy życiem w kodzie...



Pozatym kto powiedział że potrzebne ci są jakieś pixele itp. zobacz ten filmik...
https://www.youtube.com/watch?v=9ukhOAUseKY

^_^ jeden z moich ulubienych :D



Albo jakbyś chciał nieco 3D :D
https://www.youtube.com/watch?v=IEbFwDv1RHU




No i coś mojego kiedy uczyłem jednego z moich "prywatnych" uczniów rysowania właśnie koła ^_^
https://www.youtube.com/watch?v=PLy6HHvLfVw

jak chcesz daj suba xDDDD
Szkoda że na polskim YouTube nie ma poradników jak np. Tworzyć grafikę od podstaw
jeśli umiesz Angielski na poziomie który umożliwi ci rozumienie programów prowadzonych w J.Ang.
to napisz :P pokaże ci kilka poradników odnośnie twojego pytania ^_^ jeśli cie interesuje ofc.
P-161801
« 1 »
  Strona 1 z 1