![]() |
![]() |
|
Programiranje Programski jezici, tehnike, alatke... |
![]() |
|
Alatke vezane za temu | Vrste prikaza |
![]() |
#1 |
Veteran
Član od: 27.12.2005.
Lokacija: Vremenske Grobnice, Hiperion
Poruke: 680
Zahvalnice: 99
Zahvaljeno 124 puta na 82 poruka
|
![]()
Evo teme za sve one koje interesuje SDL. Dakle ako vas nešto interesuje, ili znate neku caku ovde je pravo mesto za priču!
Moram da priznam da me je na otvaranje ove teme naterala muka, inače mi ne bi pala na pamet. Naime imam problem , ne toliko sa SDL-om ( koji sam tek počeo da učim , BTW, pa se unapred izvinjavam na glupostima koje bih mogao da izvalim ), koliko sa DevC++ -om. Problem je sledeći: Kako naterati bloody kompajler ( zapravo , mislim da je problem u linkeru ), da iskompajlira program koji koristi SDL biblioteke ? Probao sam stvarno sve i svašta , pratio uputstva sa Cone3D, ali nema uspeha. Pa vas lepo molim, ako neko zna rešenje, hteo bih da se sklonim sa VisualC++ -a ( u kom SDL lepo radi ). |
![]() |
![]() |
![]() |
#2 |
Član
Član od: 14.12.2005.
Poruke: 72
Zahvalnice: 0
Zahvaljeno 14 puta na 2 poruka
|
![]()
Problem verovatno jeste u linkeru - reč je o nekompatibilnosti .lib i .a fajlova. Nisam koristio SDL sa DevC++-om ali su slični problemi i sa DirectX-om. Mada, ako si pratio sva uputstva onda bi trebalo da imaš verziju prilagođenu MinGW kompajleru koja dolazi sa odgovarajućim .a fajlovima umesto .lib. Napiši sta ti kompajler/linker prijavljuju, ovako napamet je teško dati neki savet...
|
![]() |
![]() |
![]() |
#3 |
Veteran
Član od: 27.12.2005.
Lokacija: Vremenske Grobnice, Hiperion
Poruke: 680
Zahvalnice: 99
Zahvaljeno 124 puta na 82 poruka
|
![]()
Heh, rešio problem. Našao na netu DevPakove za DevC++ ( konkretno SDL DevPak na DevPaks.org ). Instalorao i dobio novi template za projekte , kaže SDL . Napravim taj projekat i gle čuda, sada nema problema.
Gledao sam malo opcije i zaista stoje parametri za linker : -lmingw32 -lSDLmain -lSDL, ali u delu za kompajler stoji nešto u fazonu main=SDL_main. Sada imam drugi problem. Uzeo sam funkciju DrawPixel ( crta piksel na određenu površinu ), ali mi se čini da cela stvar stoji naopako. X-osa je OK, ali Y je izvrnuta ( npr. imam prozor 800*800, i stavim koordinate piksela (100,100), on ga crta u gornjem levom uglu, 100 piksela od ivica ekrana, valjda ). Šta sad do vraga da radim? Da li da pišem funkciju koja izvrće sadržaj moje površine ( mislim na podatak tipa SDL_Surface* ), ili je problem u funkciji SDL_Flip ( mada ne bi trebalo )? |
![]() |
![]() |
![]() |
#4 | ||
Član
Član od: 14.12.2005.
Poruke: 72
Zahvalnice: 0
Zahvaljeno 14 puta na 2 poruka
|
![]() Citat:
Citat:
Poslednja ispravka: void* (24.4.2006 u 19:33) |
||
![]() |
![]() |
![]() |
#5 |
Veteran
Član od: 27.12.2005.
Lokacija: Vremenske Grobnice, Hiperion
Poruke: 680
Zahvalnice: 99
Zahvaljeno 124 puta na 82 poruka
|
![]()
Opet ja sa svojim, ahhm, problemima...
Čisto zezanja radi, napisao sam programčić koji rotira jednu tačku i iscrtava je, pri tom sve iscrtava na ekran ( što je, je li, logično ). Napišem sve po redu, i pokrenem program i .... spirala?! Kakva sad šugava spirala, trebalo je da bude krug ( malo preciznije, trebalo bi da budu tačke koje pripadaju nekom krugu, a ne spirali ). Posle ovoga sledi proveravanje formula, dodavao nove varijable, brisao, sa direktnog računanja cos i sin prešao na tablice ( koje program sam pravi pa rezultat ne bi trebalo da se razlikuje, ali sam malčice pošizeo pa... ). Dakle, evo ga kod, pa ako može iko da mi kaže u čemu je do đavola problem? PS. nisam hteo da otvaram novu temu, a rađeno je u SDL-u, pa otud ovde.... |
![]() |
![]() |
![]() |
#6 |
Ad Ministrator
Član od: 19.8.2005.
Lokacija: Beograd, SK
Poruke: 7.280
Zahvalnice: 29
Zahvaljeno 3.041 puta na 1.544 poruka
|
![]()
Što si se tako upetljeo u te formule sa polarnim koordinatama? Zašto naprosto prvu tačku ne postaviš u polarnim koordinatama i svaku sledeću ne izračunavaš apsolutno, umesto da izračunavaš u odnosu na prethodnu tačku? Ne mogu sada da ti tačno nađem grešku, ali očigledno je da ti se u svakoj iteraciji dužina radijus-vektora smanjuje, pa otuda spirala.
Pređi ti, lepo, na najprostije apsolutne polarne koordinate. Odredi poluprečnik i početni ugao i izračunaj koordinate početne tačke kao Xcentra+r*cos(n) i Ycentra+r*sin(n) (unesi korekciju znaka y koordinate po potrebi, zbog položaja koordinatnog početka, mene mrzi). Onda naprosto uzimaj sledeće n i tako računaj koordinate sledeće tačke u kružnici sve dok ne nacrtaš celu kružnicu. |
![]() |
![]() |
![]() |
#7 |
Član
Član od: 4.3.2006.
Lokacija: grad u oblacima
Poruke: 288
Zahvalnice: 1
Zahvaljeno 5 puta na 4 poruka
|
![]()
Formule tj funkcije za crtanje liče na sve samo ne na kružnicu.
![]() Probaj da kreneš od ovog koda konkretno: Kod:
float fStep = PI / 32.0f; float fAngle = PI * 2.0f; float fRadius = 10.0; for(float fDegree = 0; fDegree < fAngle; fDegree += fStep) { float x = centar_x + float(cos(fDegree)) * fRadius; float y = centar_y + float(sin(fDegree)) * fRadius; // draw point (x, y) } |
![]() |
![]() |
![]() |
#8 |
Ad Ministrator
Član od: 19.8.2005.
Lokacija: Beograd, SK
Poruke: 7.280
Zahvalnice: 29
Zahvaljeno 3.041 puta na 1.544 poruka
|
![]()
Uh, dobro je, nisam omašio formule
![]() Pitao sam se da li se dobro sećam. Mnogo je prošlo od vremena kad sam na Amigi crtao analogni sat sa sve brojčanikom i sekundarom ![]() I to sve iz GFA-Basica ![]() |
![]() |
![]() |
![]() |
#9 |
Veteran
Član od: 27.12.2005.
Lokacija: Vremenske Grobnice, Hiperion
Poruke: 680
Zahvalnice: 99
Zahvaljeno 124 puta na 82 poruka
|
![]()
Vojo, genije!
Čim si spomenuo smanjivanje , palo mi je na pamet šta bi moglo da bude, i ispalo je da sam u pravu. Evo gde je problem: Kod:
spoint1.x=center.x+(spoint1.x-center.x)*cos(phi)-(spoint1.y-center.y)*sin(phi); spoint1.y=center.y+(spoint1.x-center.x)*sin(phi)+(spoint1.y-center.y)*cos(phi); Kod:
x'=cos(phi)*x-sin(phi)*y y'=sin(phi)*x+cos(phi)*y Kod:
x'=Cx+cos(phi)*(x-Cx)-sin(phi)*(y-Cy) y'=Cy+sin(phi)*(x-Cx)+cos(phi)*(y-Cy) ![]() Sledi ispravna verzija: Kod:
temp.x=center.x+(spoint1.x-center.x)*cos(phi)-(spoint1.y-center.y)*sin(phi); temp.y=center.y+(spoint1.x-center.x)*sin(phi)+(spoint1.y-center.y)*cos(phi); spoint1.x=temp.x; spoint1.y=temp.y; PPS. Eh, da, nije mi namera da napravim program koji iscrtava krug, već sam prosto hteo isprobam nešto iz Linearne Algebre... PPPS. Izvinjavam se ako sam nekoga udavio ovolikom pričom. PPPPS. Preterah sa Post Scriptum-om |
![]() |
![]() |
![]() |
#10 | |
Ad Ministrator
Član od: 19.8.2005.
Lokacija: Beograd, SK
Poruke: 7.280
Zahvalnice: 29
Zahvaljeno 3.041 puta na 1.544 poruka
|
![]() Citat:
![]() |
|
![]() |
![]() |
![]() |
#11 |
Član
|
![]()
e nije ni posle potpisa ..
![]() |
![]() |
![]() |
![]() |
#12 |
Veteran
Član od: 27.12.2005.
Lokacija: Vremenske Grobnice, Hiperion
Poruke: 680
Zahvalnice: 99
Zahvaljeno 124 puta na 82 poruka
|
![]()
Latinski, eh...
Sve bi bilo u redu da ga nisam malčice zaboravio... ![]() |
![]() |
![]() |
![]() |
#13 |
Kekule Mekule
|
![]()
Krenuo sam da pravim 2D engine.Od biblioteka koristi SDL | SDL_image | SDL_mixer | SDL_ttf
Engine je nekih 10-20%(ako je i toliko) uradjen tj. uradjeno je sledece: 1. ReaperCore - Samo jezgro sluzi za inicijalizaciju svih SDL sistema, pravljenje prozora i pokretanje aplikacije. 2. EventHandler - Klasa koja sluzi za monitoring eventa.(slicna kao kod Irrlichta) 3. Timer - Samo ime kaze. 4. SpriteBase - Baza sa Sprajtove.Sadrzi slike(frejmove) i podatke o njima. 5. Sprite - Tipican sprajt.Potrebna baza sprajtova za pravljenje 6. TrueTypeFont - Font klasa koja pravi i renderuje neki tekst(iz TTF). 7. Sound - Klasa koja sadrzi neki zvuk i po potrebi ga pusta. 8. Music - Klasa koja sadrzi muziku i funkcije koje su potrebne za reprodukciju. Sve je ovo lepo sto sam napravio ali uvek postoje problemi zar ne? Tako i ja imam jedan. Tice se klase Sprite. Pri pravljnju je koriscena Cone-ova tehnika i to radi. Problem se javlja kada napravim dva sprajta.Kada renderujem prvi sprajt onda sve ide u redu. Kada renderujem prvi i drugi sprajt onda program puca. Kada renderujem samo drugi sprajt program puca, opet. Ne znam u cemu je problem! Molim vas pomagajte!!! |
![]() |
![]() |
![]() |
#14 |
Kekule Mekule
|
![]()
I evo ga Engine Test projekat: http://d.turboupload.com/d/1509205/R..._Test.zip.html
|
![]() |
![]() |
![]() |
#15 |
Kekule Mekule
|
![]()
Eh ljudi resio sam problem!!!
Prva stvar koju sam zakljucio je da bag dolazi kada se poziva metod Render. Zbog toga sam ubacio proveru varijable mDrawn da bi se sprecilo crtanje vise frejmova u sekundi (moze zatrebati). Posto to nije pomoglo nisam znao sta da radim. Posle nekog vremena razmisljanja pomislih: "Mozda nije problem u engineu nego sam ga nepravilno upotrebio!", i bio sam u pravu. Sve instance klase Sprite su bile pointeri. Pomislih: "Mozda to pravi problem!", i krenuh u akciju. Instance vise nisu bile pointeri vec "obicne" varijable. Zbog toga sam ceo konstruktor prebacio u metod Init. Iskompajlirah Engine Test i voila! Test radi! Sav srecan odlucih da ovo resenje podelim sa vama! Samo ne znam zasto klasa Sprite pravi probleme kada su njene instance pointeri??? |
![]() |
![]() |
![]() |
#16 |
Član
Član od: 14.12.2005.
Lokacija: Uspavan Dolina
Poruke: 91
Zahvalnice: 12
Zahvaljeno 2 puta na 2 poruka
|
![]()
Krenuh da se ucim SDL, i sve je lepo super i fino, ali se javlja jedan problem koji nikako ne mogu da resim. Kada pritisnem strelicu za desno umesto da se slika koja treba da se pomeri za 10 piksela, pomera kao luda, nekad ode i van prozora. Evo dela koda , da li neko mozda zna gde gresim.
Kod:
int i = 0; while (i == 0) { SDL_PollEvent(&e); if (e.type == SDL_QUIT) i = 1; else if (e.type == SDL_KEYDOWN) switch (e.key.keysym.sym) { case SDLK_RIGHT: prr.x += 10; break; case SDLK_LEFT: prr.x -= 10; break; default: break; } SDL_RenderClear(pr); SDL_RenderCopy(pr, pt, NULL, &prr); SDL_RenderPresent(pr); } |
![]() |
![]() |
![]() |
#17 |
V.I.P. Programiranje
Član od: 29.8.2007.
Lokacija: Valjevo
Poruke: 1.349
Zahvalnice: 983
Zahvaljeno 371 puta na 280 poruka
|
![]()
Problem je zato sto ce dodavati +10 svakog frejma sve dok je taj taster down, verujem da si hteo to da radis na SDL_KEYUP event.
|
![]() |
![]() |
![]() |
#18 |
Starosedelac
Član od: 15.6.2007.
Lokacija: Amsterdam
Poruke: 1.817
Zahvalnice: 463
Zahvaljeno 310 puta na 230 poruka
|
![]()
Kad ovako "podigne" temu posle 7 godina i naiđeš na Vojin post...
|
![]() |
![]() |
![]() |
#19 |
Član
Član od: 14.12.2005.
Lokacija: Uspavan Dolina
Poruke: 91
Zahvalnice: 12
Zahvaljeno 2 puta na 2 poruka
|
![]()
Probao sam i SDL_KEYUP isto se desava.
|
![]() |
![]() |
![]() |
#20 |
V.I.P. Programiranje
Član od: 29.8.2007.
Lokacija: Valjevo
Poruke: 1.349
Zahvalnice: 983
Zahvaljeno 371 puta na 280 poruka
|
![]()
Ne bi trebalo, verovatno nesto radis pogresno, postuj kod ponovo.
|
![]() |
![]() |
![]() |
Bookmarks sajtovi |
|
|
![]() |
||||
tema | temu započeo | forum | Odgovora | Poslednja poruka |
Problemi sa Post Mortem | Boranija | Avanturističke igre | 21 | 29.12.2011 19:30 |
xp - problemi | Cika Crni | Kvarovi | 4 | 17.4.2006 20:45 |
Nokia 6230 problemi oko instaliranja igara | Spomenko | Aparati i oprema | 3 | 18.3.2006 22:31 |
Problemi u igrama-Radeon 9000 PRO | Grond | Grafika | 7 | 29.1.2006 23:41 |
Windows XP Desktop problemi | don_kibo | Operativni sistemi | 9 | 7.12.2005 2:52 |